如何使用nsIProcess在JavaScript中运行没有窗口的windows命令

如何使用nsIProcess在JavaScript中运行没有窗口的windows命令,javascript,firefox,command-line,firefox-addon,Javascript,Firefox,Command Line,Firefox Addon,我想运行一些命令,例如: notepad C:\file.txt 使用Firefox插件和。我已经编写了如下代码: var exepath = "C:\Windows\System32\cmd.exe"; var args = ["/c", "notepad", "C:\file.txt"]; var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile); file.initWithPath(exepath

我想运行一些命令,例如:

notepad C:\file.txt
使用Firefox插件和。我已经编写了如下代码:

var exepath = "C:\Windows\System32\cmd.exe";
var args = ["/c", "notepad", "C:\file.txt"];
var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
file.initWithPath(exepath);
var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
process.init(file);
process.run(true, args, args.length);
但我不想打开窗户是否可以在不打开此窗口的情况下运行某些命令?

我知道,在执行命令后,我可以使用
cmd.exe/C start notepad
关闭此窗口,但它会闪烁(出现并消失)。此外,我还想读取退出值:

var exitval = process.exitValue;

我忘了说我不能安装任何附加软件

您可以直接运行记事本-您不需要
cmd.exe
。但是您必须找到可执行文件的完整路径。它的路径是
%windir%/notepad.exe
,您可以使用它来解析该路径(您实际上也必须使用
cmd.exe
,而不是假设Windows安装在
c:\Windows
中):


如果您想运行记事本以外的东西:您必须执行命令行通常执行的工作,即获取
PATH
环境变量并遍历列表中的目录,查看文件的退出位置。

这是一个老问题,但该页面在谷歌搜索结果中排名很好

要避免窗口出现和消失,应使用此命令


如果您没有任何需要改进的地方,请不要建议编辑。提示:将黑体字应用于文章的任意部分并不是一种改进。我想突出这些我认为重要的地方,但我第一次错过了阅读。在我看来,如果某个东西是粗体的,人们就会关注它。虽然这个链接可以回答这个问题,但它确实是,并且提供了一个链接供参考。如果链接页面发生更改,则仅链接的答案可能无效。始终引用重要链接中最相关的部分,以防目标站点无法访问或永久脱机。虽然在这个问题后附上一个基于Firefox附加SDK的答案可能会有所帮助,但这个问题显然与附加SDK无关。有鉴于此,您至少应该在回答中提到,它是为那些使用附加SDK的人提供的。
var env = Cc["@mozilla.org/process/environment;1"]
            .getService(Ci.nsIEnvironment);
var exepath = env.get("WINDIR") + "\\notepad.exe";