WSH : cmd.exe に 空白を含むファイルパスを渡す
WSH(Windows Script Host)の WScript.Shell オブジェクトを使い、cmd.exe のコマンドを呼び出そうと思ったのだけど、呼び出すコマンドの引数が file path で、その中に "Documents and Settings" みたいに空白を含む名前があると、一個の引数(file path)のはずが空白のところで一旦区切られてしまい、おかしくなる。
cmd.exe(コマンドプロンプト)から実行するときはそのような file path を渡す(pasteする)際に、空白を含む名前のところだけその都度 "(double quotation)で囲っていたのだが、WScript.Shell の Exec() の場合だと、file path を .split("\") して…空白を含むところだけ \"(Javascript 文字列だから Escape してる)で包んで…とか考えるとメンドクサイというか、ちょっと試してみたら上手くゆかないぞ、あれ何か間違えた?
…実は単に file path 全体を \" で囲んで渡せばいいだけ。
こんな感じ。
var wsh = new ActiveXObject("WScript.Shell"); var fp = "C:\Documents and Settings\userHome\sample.txt" var cmd = "type " + "\"" + fp + "\""; var ret = wsh.Exec(cmd);
Hey, Scripting Guy! スクリプト パスに空白スペースが含まれる場合に CScript スクリプト ホストでリモート プロセスを開始する方法はありますか