110 likes | 410 Views
FINDSTR コマンドを使った ソースコード検索. 稲垣 智浩 (CatTail). Windows の検索機能. Windows Vista でファイル検索は便利になった でもキーワードが含まれるファイル名が表示されるだけ。 しかも VB のソースファイル (*.vb 、 *.frm) は検索の対象外。 (Windows 2000 までは検索対象だったんだけど ). それぞれの OS で検索してみた. Windows 2000. Windows Vista. それぞれの OS で検索してみた. Windows 2000 *.vb が検索される.
E N D
FINDSTRコマンドを使ったソースコード検索 稲垣 智浩(CatTail)
Windowsの検索機能 • Windows Vistaでファイル検索は便利になった • でもキーワードが含まれるファイル名が表示されるだけ。 • しかもVBのソースファイル(*.vb、*.frm)は検索の対象外。 (Windows 2000までは検索対象だったんだけど)
それぞれのOSで検索してみた Windows 2000 Windows Vista
それぞれのOSで検索してみた Windows 2000 *.vbが検索される Windows Vista *.vbが検索されない
きっかけは(VSSで管理されていない)VBのソースファイルから特定のキーワードが含まれるファイルを検索したかった。きっかけは(VSSで管理されていない)VBのソースファイルから特定のキーワードが含まれるファイルを検索したかった。 • 当時、個人でWZ Editorを使用していたこともあり、WZ Editorに含まれるgrep機能を使って検索していた。 • 他のメンバーに展開する場合に、ライセンスの問題や特定のアプリケーションに依存したくなかった。 • Windowsのコマンドを調べているうちにFINDSTR.EXEを発見!
FINDSTR.EXEの使用方法 • コマンドプロンプトを開き、以下のコマンドを入力する。 FINDSTR /S /I 検索キーワード ファイル名 オプションの意味は /S 現在のディレクトリとサブフォルダを検索 /I 大文字と小文字を区別しない。 ※/?オプションを指定するとヘルプが表示される。
出力結果をクリップボードにコピー • コンソールに出力すると結果がスクロールしてしまう。 • 出力リダイレクトを使ってファイルに出力してもいいけど、何だかスマートではない。 • 調べているうちにCLIP.EXEを発見! FINDSTR /S /I foo *.* | CLIP メモ帳を開き、ペースト。 .NETの場合、日本語が化けてしまいます。これはCLIP.EXEがUNICODEに対応していない(?)からで、とりあえずnkfを使ってS-JISに変換。 FINDSTR /S /I foo *.* | nkf -ic=u -oc=s | CLIP
検索対象ディレクトリを絞りたい • FINDSTRの/Fオプションを使用。 • 現在のフォルダおよびサブフォルダに含まれるファイル一覧を作成。 DIR /S/B > filelist.txt • メモ帳でfilelist.txtを修正。 • 作成したファイル一覧をFINDSTRで使用する。 FINDSTR /F:filelist.txt /I foo | nkf -ic=u -oc=s | CLIP • 検索結果をメモ帳に貼り付け。
おまけ なぜかWindows Vistaでも存在しているMS-DOSのコマンド群 • EDLIN.EXE 昔はEDLINを使ってCONFIG.SYSやAUTOEXEC.BATを編集しました。(さすがにソースコードの入力まではやっていません) • EDIT.COM DOS/V以降、フルスクリーンエディタが付いてくるようになったのでCONFIG.SYSやAUTOEXEC.BATの編集が楽になった。 • DEBUG.COM FATテーブルが壊れたときに使ったことがあるけど…あと16進数でダンプするときとか。
これらのコマンドを実行すると、英語モードになってしまうので、日本語モードに戻すにはCHCPコマンドを使って戻します。これらのコマンドを実行すると、英語モードになってしまうので、日本語モードに戻すにはCHCPコマンドを使って戻します。 • コマンドプロンプトで CHCP 932 と入力してください。 以上、ご静聴、ありがとうございました。