himorogiの日記

主にプログラミングに関することなど。少々ハード(電子工作)についても。

WSH : cmd.exe に 空白を含むファイルパスを渡す

WSHWindows 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 スクリプト ホストでリモート プロセスを開始する方法はありますか