如何在使用 nsIProcess 运行文件时隐藏命令提示符窗口.bat

How to hide command prompt window while running .bat file using nsIProcess?

本文关键字:隐藏 命令提示符 窗口 bat 文件 运行 nsIProcess      更新时间:2023-09-26

我的代码:

var fpath="C:''TVT_"+cur_date+"_"+cur_time+".avi";
Components.utils.import("resource://gre/modules/FileUtils.jsm");
var env = Components.classes["@mozilla.org/process/environment;1"]
                    .getService(Components.interfaces.nsIEnvironment);
var shell = new FileUtils.File(env.get("COMSPEC"));
var args = ["/c", "cd.. & cd.. & C: & cd C:/ffmpeg/bin & record.bat "+fpath];
var process = Components.classes["@mozilla.org/process/util;1"]
                     .createInstance(Components.interfaces.nsIProcess);
process.init(shell);
process.runAsync(args, args.length);

当我通过此代码执行批处理文件时,始终显示命令提示符窗口提示符。

有没有办法隐藏该窗口并静默运行批处理?

使用 Windows XP 和 Firefox 12.0

谢谢。。

我不认为Firefox可以在没有控制台窗口的情况下运行批处理文件。但是,这可以通过 WshShell.Run() 使用 Windows 脚本主机(intWindowStyle参数必须为 0)。你需要一个 JScript 文件,例如 record.js内容:

var dir = WScript.ScriptFullName.replace(/['/'']+[^'/'']*$/, "");
var Shell = WScript.CreateObject("Wscript.Shell");
Shell.CurrentDirectory = dir;
Shell.Run("record.bat", 0, true);

此脚本从其自己的路径推断目录,并在同一目录中运行record.bat。然后,您可以像这样运行此脚本:

var script = new FileUtils.File("c:''ffmpeg''bin''record.js");
var process = Components.classes["@mozilla.org/process/util;1"]
                        .createInstance(Components.interfaces.nsIProcess);
process.init(script);
process.runAsync([], 0);

要运行批处理,请在其第一行静默添加@echo off