12

我正在尝试编写应该在其中运行带有指定命令行的 cmd.exe 的 javascript,例如docs.google.com/file/d/0B7QHCoQDlEvKWUZSX3oxUDI2SDg/edit

我在微软网站上阅读了 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 中插入命令行。

有人可以帮助我吗?先感谢您。

4

3 回答 3

9

也许您的计算机中没有安装(或注册)这个 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]path of the directory文档说:“包含sFile指定的文件的完全限定。如果未指定此参数,则使用当前工作目录。”

这意味着您对此参数的路径无效(.cmd.exe在它的末尾)。此外,创建 ActiveX 的所有示例都是这样的:

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

注意 中的小写字母"shell.application"

May12,谢谢你提出这个问题。我以前不知道这个ActiveX控件,它对我来说似乎很有用。

编辑二

但是你明白了吗?您的示例在我的应用程序中完美运行:

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

除了三个例外:

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

2) 转义\也用于参数。

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

于 2012-04-17T07:54:32.813 回答
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()"
于 2020-08-28T16:28:37.320 回答
-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"); 

可以使用

于 2015-01-27T14:33:14.840 回答