我正在尝试编写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中插入命令行。
有人能帮帮我吗?先感谢您。
答案 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");
可以使用