仕事を辞めたい、怠け者だからな

仕事を辞めたいとグダグダ言いながらも、やめる手順が面倒だということで結局やめない「からな」の面倒嫌いブログです。日々のことなり、色々書いていきます。自由気まま、やりたいことばかりやっちゃう。

仕事を辞めたい、
怠け者だからな

メインブログです。
ぐだぐだしつつも、
やりたいことに全力全身!

  最高の出会いを求めて
自身の最高の出会いまでの道のり、
方法を書いていきます。

  標準体重を目指して
標準体重を目指して奮闘する!
ダイエットグッズ実践含みます。

【コマンド】特定文字列を含む行のみ抽出【FINDSTR】

FINDSTRという便利なコマンドがあると聞いたことがあります。
CSVファイルなり、テキストファイルなり
この文字列を含む行だけを抽出したい!
Excel開いてオートフィルタで検索しても良いけど面倒だ!

そんなこと思うよね?ね?

私は何度も思います。
ということで、毎回何度も調べなおしているので
良い機会なのでメモします。

f:id:mochi-ha:20160624160445p:plain

さて。
コレがコマンドプロンプトの内容ですね。

FINDSTR
検索文字列に正規表現とか使えるみたいですね。
あと、完全一致とか、文字の大文字小文字気にしない。

複数の文字列を検索する場合には、
引数 /C を使わず、各文字列をスペースで区切ります。
たとえば、FINDSTR "hello there" x.y と指定した場合は、
ファイル x.y で "hello"または "there" が検索されます。
これに対して、FINDSTR /C:"hello there" x.y と指定した場合は
ファイル x.y で"hello there" が検索されます。

うん、良く分かった。
半角スペースを入れると「or」検索になるわけだな!

FINDSTR "テスト" TEST.txt>NEWTEST.txt

こうやれば、「テスト」を含む行を抽出し
NEWTEST.txtを出力してくれる。

いやー。なんて優れもの!

                • -

バッチファイル化する。

cd %~dp0
findstr %1 Database.csv>data.csv

cd %~dp0で自分のディレクトリにアクセス。
C:\test\test1\test2.batを作成していたら
C:\test\test1\にアクセス!
そして、C:\test\test1\の中にある
Database.csvから%1(引数)のものを抽出し
data.csvに書き出し!

ちなみに、VBSからこのファイルを呼び出すときは、

'スクリプト名を含まないフルパスを編集する
	strScriptPath = Replace(window.location & "" , "file:///","")
	strScriptPath = Replace(strScriptPath,"/","\")
	strScriptPath = Replace(strScriptPath,"%20"," ")

	count=LEN(strScriptPath)
	
	For i=count to 1 step -1
		TEST=MID(strScriptPath,i,1)
		If	TEST<>"\" then
			strScriptPath=LEFT(strScriptPath,i)
		End if
		If TEST="\" then
			strScriptPath=LEFT(strScriptPath,i-1)
			Exit for
		End if
	Next

Set Shell = CreateObject("WScript.Shell")
Shell.Run("""" & strScriptPath & "\data\data.bat" & """" & " " & FolderName)

FolderNameっていうのが引数ね。
うーん、分かりづらいかなw

PCMAX ハッピーメールバナー