我的代码:
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
谢谢..
答案 0 :(得分:1)
我不认为Firefox可以在没有控制台窗口的情况下运行批处理文件。但是,可以通过WshShell.Run()
使用Windows Scripting Host(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);
答案 1 :(得分:0)
要以静默方式运行批处理,请在其第一行添加@echo off
。