【问题标题】:How to Run cmd.exe with parameters from javascript如何使用来自 javascript 的参数运行 cmd.exe
【发布时间】:2012-04-17 07:16:14
【问题描述】:

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

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

【问题讨论】:

  • cd C: 几乎没有任何意义,`c:` 就足够了。

标签: javascript command-line cmd shellexecute


【解决方案1】:

您的计算机中可能没有安装(或注册)此 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) 最后一个参数是数字类型,而不是字符串。

【讨论】:

  • 对不起我的英语。我将再次尝试解释:我有一个代码 - 'var shell = WScript.CreateObject("WScript.Shell"); shell.Run("C:\\WINDOWS\\system32\\cmd.exe");'结果,我收到一个带有字符串的打开的 dos 窗口:Microsoft Windows [Version 5.2.3790] (C) 版权所有 1985-2003 Microsoft Corp. C:\Bats> 我需要类似:_C:\ cd c:\ext_file C:\EXT_FILE>main.exe test.txt _
  • Hmm... Run-method 直接在 CMD 中运行 commands to run,你不应该在那个字符串中调用 cmd.exe,只是你想在 CMD 中执行的命令,就像你一样将它们写在命令行中。
  • Teemu,我看过这本手册。但这对我没有帮助。最终我需要这样的窗口docs.google.com/file/d/0B7QHCoQDlEvKWUZSX3oxUDI2SDg/edit
  • 蒂姆,你是对的。真的我不明白 objShell.ShellExecute() 中的参数顺序。
  • 有什么办法可以在这里输出吗?
【解决方案2】:

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

如果路径中没有空格

    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()"

【讨论】:

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

    可以使用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-28
      • 1970-01-01
      • 2012-08-03
      • 1970-01-01
      • 1970-01-01
      • 2011-02-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多