如何从JavaScript中使用参数运行cmd.exe

12

我正在尝试编写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中插入命令行。

有人能帮我吗?谢谢提前。


cd C: 几乎没有意义,只需要 c:\ 就可以了。 - kirilloid
3个回答

9

也许您的计算机没有安装(或注册)此ActiveX控件。

WScript.Shell应该在每个Windows中都可以找到:

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

如果commands to run中有空格,需要使用双引号。 编辑 下面的内容主要来自于MSDN:http://msdn.microsoft.com/zh-cn/library/windows/desktop/gg537745(v=vs.85).aspx
iRetVal = Shell.ShellExecute(
  sFile,
  [ vArguments ],
  [ vDirectory ],
  [ vOperation ],
  [ vShow ]
)

让我们以[vDirectory]为例。文档中说:“包含由sFile指定的文件的完全限定目录路径。如果未指定此参数,则使用当前工作目录。”

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

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

请注意"shell.application"中的小写字母。
May12,感谢你提问。在此之前我不知道这个ActiveX控件,它对我来说似乎非常有用。
编辑2:但是你理解了吗?你的示例在我的应用程序中完美运行。
objShell.ShellExecute("cmd.exe", "cd C: C:\\cd c:\\ext_file main.exe test.txt", "C:\\WINDOWS\\system32", "open", 1);

有三个例外:

1)我在这个答案中提到的路径

2)转义字符\也用于参数。

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


抱歉我的英语不好,我会再解释一遍:我有一段代码 - 'var shell = WScript.CreateObject("WScript.Shell"); shell.Run("C:\WINDOWS\system32\cmd.exe");',结果我会得到一个打开的DOS窗口,其中包含字符串:Microsoft Windows [Version 5.2.3790] (C) Copyright 1985-2003 Microsoft Corp. C:\Bats> 我需要像这样的东西:_C:\cd c:\ext_file C:\EXT_FILE>main.exe test.txt _ - May12
嗯...那个Run方法直接在CMD中运行要运行的命令,你不应该在字符串中调用cmd.exe,只需要像在命令行中一样写出你想要执行的命令即可。 - Teemu
Teemu,我看过这个手册。但它对我没有帮助。最终我需要像这样的窗口 https://docs.google.com/file/d/0B7QHCoQDlEvKWUZSX3oxUDI2SDg/edit - May12
Teemu,你是对的。我真的不理解objShell.ShellExecute()中参数的顺序。 - May12
这里有获取输出的任何方式吗? - Mikeec3
你会在参数中使用变量吗?objShell.ShellExecute("cmd.exe", variable, "", "open", 1); - Cardinal System

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
var objShell = new ActiveXObject("Shell.Application");
objShell.ShellExecute("cmd.exe", "C: cd C:\\pr main.exe blablafile.txt auto", "C:\\WINDOWS\\system32", "open", "1"); 

可用


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接