如何使用javascript中的参数运行cmd.exe

时间:2012-04-17 07:16:14

标签: javascript command-line cmd shellexecute

我正在尝试编写javascript,它应该运行带有指定命令行的cmd.exe,如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中插入命令行。

有人能帮帮我吗?先感谢您。

3 个答案:

答案 0 :(得分:6)

可能您没有在计算机中安装(或注册)此ActiveX控件。

应该在每个Windows中找到

WScript.Shell

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"中的小写。

5月12日,谢谢你的提问。我以前不知道这个ActiveX控件,它对我来说似乎非常有用。

编辑II

但你了解它吗?您的示例在我的应用中完美无缺:

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

有三个例外:

1)我在这个答案的早期提到的关于路径的那个

2)在参数中也使用了转义\

3)最后一个参数是数字的类型,而不是字符串。

答案 1 :(得分:0)

如果我理解正确,那么您只对使用参数调用另一个文件感兴趣。这是我从快捷方式或批处理文件调用另一个文件的示例

如果路径中没有空格

    mshta.exe "javascript:new ActiveXObject('WScript.Shell').Run('cmd /c start /max C:\\Windows\\Notepad.exe',0,false);close()"

路径中有空格。双引号替换为#

    mshta.exe "javascript:new ActiveXObject('WScript.Shell').Run('cmd /v /c set a=""&call set #=!a:~0,1!&start /max C:\\!#!Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe!#!',1,true);close()"

答案 2 :(得分:-2)

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

可以使用