web-dev-qa-db-ja.com

JavaScriptのパラメーターを使用してcmd.exeを実行する方法

このように指定されたコマンドラインでcmd.exeを実行するjavascriptを記述しようとしています docs.google.com/file/d/0B7QHCoQDlEvKWUZSX3oxUDI2SDg/edit

Microsoftサイトでshellexecuteメソッドを読んだ後、コードを準備します。

var objShell = new ActiveXObject("Shell.Application");
        objShell.ShellExecute("cmd.exe", "C: cd C:\\pr main.exe blablafile.txt auto", "C:\\WINDOWS\\system32", "open", "1");

ただし、cmd.exeにコマンドラインは挿入されません。

誰かが私を助けてくれませんか?前もって感謝します。

12
May12

コンピューターにこのActiveXコントロールがインストール(または登録)されていない可能性があります。

WScript.ShellはすべてのWindowsで見つかります。

var run=new ActiveXObject('WSCRIPT.Shell').Run("commands to run");

commands to runにスペースがある場合は、二重引用符を使用する必要があります。

編集

以下のコンテンツは主にMSDNからのものです: http://msdn.Microsoft.com/en-us/library/windows/desktop/gg537745(v = vs.85).aspx

iRetVal = Shell.ShellExecute(
  sFile,
  [ vArguments ],
  [ vDirectory ],
  [ vOperation ],
  [ vShow ]
)

[vDirectory]をとりましょう。ドキュメントには、「sFileで指定されたファイルを含む完全修飾path of the directory。このパラメーターが指定されていない場合、現在の作業ディレクトリが使用されます」と記載されています。

これは、この引数に無効なパスがあることを意味します(引数の最後に.cmd.exeが付いています)。また、ActiveXを作成するためのすべての例は次のとおりです。

var objShell = new ActiveXObject("Shell.application");

"Shell.application"の小文字に注意してください。

そしてMay12、これを尋ねてくれてありがとう。以前はこのActiveXコントロールについて知りませんでしたが、私にとって非常に便利なようです。

EDIT II

しかし、あなたはそれを理解しましたか?あなたの例は私のアプリで完璧に動作します:

objShell.ShellExecute("cmd.exe", "cd C: C:\\cd c:\\ext_file main.exe test.txt", "C:\\WINDOWS\\system32", "open", 1);

3つの例外があります。

1)パスについてこの回答の前半で述べたもの

2)エスケープされた\は引数でも使用されます。

3)最後の引数は文字列ではなく数値のタイプです。