IEXPRESSでバッチファイルをEXEにする場合に。

 Windows2000、XPに付属しているIEXPRESS.EXEで、バッチファイルやVBSを擬似的にEXEにする(自己伸張形式のCABにする)というTIPSは良く知られている。
これによりバッチファイルの中身を見にくくするとか、右クリック→「別ユーザとして実行」を有効にするとか、ショートカットとして扱うことも簡単になる、つーアレだ。

 俺もたまに使うのだが、ちゃんと拡張子を見てくれてるみたいだ、ということに最近気づいた。

 つまり、*.BATのファイルをEXEにするとCOMMAND.EXEcommand.comが、*.CMDだとCMD.EXEが動いてくれるようなのだ。

 例えば、こういうバッチファイル。
@ECHO OFF
: TEST
ECHO NOTEPAD起動
START /W C:\WINDOWS\system32\NOTEPAD.EXE
ECHO NOTEPAD終了
:
ECHO CALC起動
START /W C:\WINDOWS\system32\Calc.EXE
ECHO CALC終了
:
ECHO COPY開始
COPY "C:\Documents and Settings\SIGNAL9\デスクトップ\TEST\DUMMY.TXT" "C:\Documents and Settings\SIGNAL9\デスクトップ\TEST\DUMMY2.TXT"
ECHO COPY終了
PAUSE
これをうっかり、TEST.BATという名前でセーブしてしまった。
 単純にダブルクリックすればこのBATはきちんと動作するので気づかなかったのだが、これをIEXPRESSでEXEにすると動かない。

 原因はファイルの拡張子がBATだったためらしく、CMDに直して再度EXE化するとうまく行ったのである。

 要するに、STARTとかLFNのパスとかはcommandではサポートされてないためで、拡張子BATでやりたいのなら、こう書かなきゃいけなかった。
@ECHO OFF
: TEST
ECHO NOTEPAD起動
C:\WINDOWS\system32\NOTEPAD.EXE
ECHO NOTEPAD終了
:
ECHO CALC起動
C:\WINDOWS\system32\Calc.EXE
ECHO CALC終了
:
ECHO COPY開始
CD C:\DOCUME~1\SIGNAL9~1\TEST
COPY DUMMY.TXT DUMMY2.TXT
ECHO COPY終了
PAUSE

 デスクトップから動かすと適当に按配してくれるくせに、なんでIEXPRESSを通すとこういう仕様なのかに関しては、まあ推測できる理由はあるのだが、よくわからない(爆)
[PR]
by SIGNAL-9 | 2008-01-09 17:03 | TIPSとかKludgeとか | Comments(2)
Commented by 校正のバイト at 2008-11-20 09:17 x
COMMAND.EXE は COMMAND.COM
Commented by SIGNAL-9 at 2008-11-25 12:47
おっしゃるとおり、間違えました。
訂正しておきました。親切な御指摘ありがとうございます。
<< コンピュータのキーボードを介し... 初詣。 >>