Written 10/27/98
lhgrep
このスクリプトは、指定されたlzhファイルの中の指定されたファイルを テンポラリファイルに展開、そのファイルの中を正規表現で検索し、 その結果を標準出力します。
    lhgrep.lzh (4kB)
 
使い方は次のようです。
    CScript [//nologo] lhgrep.js lzhfile1 [lzhfile2 ...]
                    [-f file1 [file2 ...]] -r RegExp
    
    lzhfile : LHAで圧縮された書庫ファイル 省略不可
    file : 展開されて検索をかけられるファイル 省略時は全て
    RegExp : 正規表現 省略不可
 
lzhfile、file はともにワイルドカードが使えます。
それでは具体的に使ってみましょう。 例えば、次のようにプロンプトから入力します。
    cscript //nologo lhgrep.js xxx\bak98102?.lzh -f *.txt -r さくら > a.txt
 
すると、バッチファイルが作成されてそれが走ります。 指定されたLZHファイルが展開され、 指定したファイル(ここでは拡張子.txtのファイル)が抽出されます。
以前私が使っていた同様のソフトは全てのファイルをいったん抽出していたため、 それに非常に時間がかかっていたのですが、 このソフトは指定したファイルだけ抽出するのでその分速いです。
展開が終わっても(確か)DOS窓は閉じないので、自力で閉じます。 そうするとまたスクリプトが走り出して、抽出されたファイルを検索しに行きます。 マッチした行は標準出力され、またまったくマッチしなかったファイルは消されます。 a.txtには次のように書かれます。
    C:\WINDOWS\TEMP\lhgrep\extract\Log02442.txt(10): 爆発しているのは「クレ
    ヨン王国」のほうだと思ったんだけど、さくらもアリ
    C:\WINDOWS\TEMP\lhgrep\extract\Log02442.txt(13): さくらは最近は映画化で
    盛り上がっています(^^;  来月発売の7巻にテレビ以
 
ファイル名の後の数字はマッチした行番号を表します。
このファイルを例えば秀丸で開いて、適当な行にカーソルを置いてF10を叩きます。 すると、そのファイルが開いてその行に飛びます。
他のエディタではどう操作すればいいか知りません。
このままではキータイプが多いという人は、 次のようなバッチファイルを作りましょう。
    ------lhgrep.bat------
    cscript //nologo xxx\lhgrep.js %1 %2 %3 %4 %5 %6 %7 %8 %9
    > c:\windows\デスクトップ\tmplhgrep.txt
 
本当は1行で書きます。 それから xxx\lhgrep.js は実際のフルパスを書いてください。 「デスクトップ」は本当は半角カタカナです。 環境に合わせて適当に書き換えてください。
上のようにしておけば、どのディレクトリからでも、
    lhgrep xxx\bak98102?.lzh -f *.txt -r さくら
 
すればデスクトップに結果ファイルが現れます。
それから、展開のバッチファイルはいつも、
    C:\WINDOWS\TEMP\lhgrep\tmplha.bat
 
となりますから、このバッチファイルのプロパティで、 「プログラム終了時にウィンドウを閉じる」にチェックをしておきましょう。 そうすれば次からは自分でウィンドウを閉じなくてもよくなります。
このスクリプトを使用するには lha32.exe が必要です。
私は大昔にNIFで拾いましたが、WWW上ではどこにあるんでしょうね。 そのうち調べておきます。
あと、当然のことながら Windows Scripting Host が必要です。 Windows 98 には標準でインストールされています。 Windows 95/NT4.0 の場合には別途インストールの必要があります。 Microsoftのサイトから拾ってきてください。

表紙