バッチファイルをハックせよ 2008/10e
「もしファイル FA と FB が両方あったら RA を、そうでないときは RB を実行」
という文をバッチファイルで書こうとしたときにこう思いました:
「これはバッチファイルで書くより、どっからか sh.exe 等を持ってくる方が早いな」
ということで早速
UnxUtilsというのを
持ってきます。5月に同じようなことをしたときは Unix-like Tools というパッケージを
使いましたので、今回は別なのにしてみました。
パッケージを展開すると、sh.exe と、標準的なコマンド群が
それぞれ別のディレクトリに置かれていて、まあ、気持ちはわかるのですが、
面倒なので全部同じディレクトリにブチ込みます。
それでまず以下のように書いた hoge.sh というファイルを作ります。
if test -f FA -a -f FB
then
RA
else
RB
fi |
そしてあとはこの hoge.sh というファイルを呼び出すバッチファイルを
こんな感じ:
@echo off
set PATH=C:\コマンド群をブチ込んだディレクトリ名;%PATH%
test -f hoge.sh
if errorlevel 1 goto :end
sh.exe hoge.sh
:end |
こんな感じで書いてやったところ、おお! あっという間に書けた!!
やっぱ sh を入れて正解でしたね私には。
‥‥つか、私には sh.exe よりも test コマンドが重要だったのかもしれません。
上にあげた sh スクリプトと同じことって、test コマンドさえ使えば
バッチファイルでも実は簡単に書けてしまえますからね(‥ということに、
このページを書きながら気付きました)。
はじめて test コマンドの存在を知ったとき「test?! 何でそんな、
試作段階の自作プログラムの名前として誰もが使いたがりそうな
名前のコマンドを標準的なコマンドとして用意するかなー。バカじゃね?!」と
思ってしまった、遠い(?)昔のことを思い出します。