2022年5月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
無料ブログはココログ

« 関連付けは非同期実行なので、連続処理に向かない。 | トップページ | ZIP圧縮の待ち合わせ方法 »

2007年11月12日 (月)

Command.com用バッチファイルをJSファイルにラップする。

Command.com用のバッチファイルをJSファイルにラッピングします。なんのこっちゃ?

拡張子.bat2jsを作成し、ファイルクラスjsfileに関連付けます。

この拡張子は、長いファイル名では、JSファイルとなり、短いファイル名では、Command.com用のバッチファイルになります。

バッチとして実行するときは、
Command.com /C 短いファイル名
で、実行します。

引数のないバッチファイル.bat2js

@if(0==0)WScript.Quit(new ActiveXObject('WScript.Shell').Run('command.com /c ' + new ActiveXObject('Scripting.FileSystemObject').GetFile(WScript.ScriptFullName).ShortPath,7,true));@else
echo %%0=%0
pause
:@end

引数のあるバッチファイル.bat2js

@if(0)==(0) ECHO OFF
echo %%0=%0
echo %%1=%1
pause
EXIT
@end
var args=new Array();args.push('command.com');args.push('/c');
args.push(new ActiveXObject('Scripting.FileSystemObject').GetFile(WScript.ScriptFullName).ShortPath);
for(var k=0;k<WScript.Arguments.Count();k++){
var arg=WScript.Arguments.Item(k);args.push(arg.indexOf(' ')+1?'"'+arg+'"':arg);}
new ActiveXObject('WScript.Shell').Run(args.join(' '),7);

ここでは、最小化ですが、コンソール入出力が必要なければ、非表示にも出来ます。

CMD.EXEは、短いファイル名を指定しても、長いファイル名に翻訳するため、使えません。

« 関連付けは非同期実行なので、連続処理に向かない。 | トップページ | ZIP圧縮の待ち合わせ方法 »