FINDSTRという便利なコマンドがあると聞いたことがあります。
CSVファイルなり、テキストファイルなり
この文字列を含む行だけを抽出したい!
Excel開いてオートフィルタで検索しても良いけど面倒だ!
そんなこと思うよね?ね?
私は何度も思います。
ということで、毎回何度も調べなおしているので
良い機会なのでメモします。
さて。
コレがコマンドプロンプトの内容ですね。
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