我知道我已经回答了一个类似的问题(Running Batch File in background when windows boots up),但这一次我需要启动一批:
来自另一个批处理的
第一批处理在控制台窗口中执行。但是,我不希望第二批(由第一批以异步方式启动)也显示控制台窗口。
我已经想出了一个可以做到这一点的VBScript脚本,并且我将该脚本作为answer for others to refer to,但是如果您有其他想法/解决方案,请随时贡献。
注意: Windows命令处理程序的控制台窗口被许多人命名为不是真正正确的DOS窗口。
感谢你们所有人的回答。据我所知,如果我需要异步调用脚本以在不可见模式下运行:
来自控制台窗口中的第二个脚本的
start /b
就足够了。来自Windows的
发布于 2008-11-18 12:48:48
是否需要第二个批处理文件来异步运行?通常,一个批处理文件与call
命令同步运行另一个批处理文件,第二个批处理文件将共享第一个批处理文件的窗口。
你可以使用 start /b
second.bat从你的第一个共享第一个窗口的批处理文件中启动第二个批处理文件。如果两个批处理文件同时写入控制台,则输出将重叠,并且可能无法识别。此外,您还需要在第二个批处理文件的末尾放置一个exit
命令,否则在完成所有操作后,您将处于第二个cmd
shell中。
发布于 2008-11-18 12:05:41
以下是一种可能的解决方案:
在第一个脚本中,使用下面的代码行调用第二个脚本:
wscript.exe invis.vbs run.bat %*
实际上,您正在使用以下命令调用vbs脚本:
%*
)所需的所有其他参数
然后,invis.vbs将使用Windows Script Host Run() method调用您的脚本,这需要:
下面是invis.vbs:
set args = WScript.Arguments
num = args.Count
if num = 0 then
WScript.Echo "Usage: [CScript | WScript] invis.vbs aScript.bat <some script arguments>"
WScript.Quit 1
end if
sargs = ""
if num > 1 then
sargs = " "
for k = 1 to num - 1
anArg = args.Item(k)
sargs = sargs & anArg & " "
next
end if
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run """" & WScript.Arguments(0) & """" & sargs, 0, False
发布于 2008-11-18 14:26:24
将批处理文件转换为exe。尝试Bat To Exe Converter或Online Bat To Exe Converter,并选择将其作为虚拟应用程序运行的选项,即无窗口。
https://stackoverflow.com/questions/298562
复制相似问题