我有一个计划任务,它启动一个每小时运行一次的批处理脚本robocopy
。每次运行时,桌面上都会弹出一个窗口,其中包含 robocopy 的输出,我真的不想看到这些输出。
我设法通过运行计划作业使窗口最小化
cmd /c start /min mybat.bat
但这样每小时都会给我一个新的命令窗口。我对此感到惊讶,因为cmd /c
“执行字符串指定的命令然后终止” - 我一定是误解了文档。
有没有办法运行批处理脚本而不弹出 cmd 窗口?
答案1
您可以使用 Windows 脚本文件静默运行它。 Run 方法允许您以不可见模式运行脚本。创建一个.vbs
类似这样的文件
Dim WinScriptHost
Set WinScriptHost = CreateObject("WScript.Shell")
WinScriptHost.Run Chr(34) & "C:\Scheduled Jobs\mybat.bat" & Chr(34), 0
Set WinScriptHost = Nothing
并安排它。此示例中的第二个参数设置窗口样式。0 表示“隐藏窗口”。
wscript.exe
在任务计划程序中,通过将“操作”设置为运行 wscript 并使用文件的完全限定路径.vbs
作为参数来运行 .vbs 文件。
完整语法Run 方法:
object.Run(strCommand, [intWindowStyle], [bWaitOnReturn])
参数:
- 对象:WshShell 对象。
- strCommand:表示要运行的命令行的字符串值。必须包含要传递给可执行文件的任何参数。
- intWindowStyle:可选。整数值,表示程序窗口的外观。请注意,并非所有程序都使用此信息。
- bWaitOnReturn:可选。布尔值,表示脚本是否应等待程序执行完毕后再继续执行脚本中的下一个语句。如果设置为 true,则脚本执行将暂停,直到程序完成,并且 Run 将返回程序返回的任何错误代码。如果设置为 false(默认值),则 Run 方法在启动程序后立即返回,自动返回 0(不解释为错误代码)。
答案2
您是否将其作为计划任务运行?如果是这样,请将其设置为以其他用户帐户运行,那么登录用户将看不到它。如果脚本不需要网络访问需要 Windows 身份验证的项目(如文件共享或打印机),您可以将其作为“nt authority\system”运行并将密码留空。在 Windows 7 上,只需将用户设置为 SYSTEM,然后按“确定”。
(如果您使用 robocopy,则可能必须使用真实用户......)
JR
答案3
只需将计划任务配置为“无论用户是否登录都运行”。
答案4
计算机辅助制造是一个非常棒的工具,它允许您从命令行对窗口执行很多很多操作。
最简单的事情之一是隐藏当前窗口(通常作为 bat 文件的第一行),使用以下命令:
cmdow @ /hid
或者启动一个新的隐藏进程
cmdow /run /hid mybat.bat