Joh*_*0te 4 windows deployment batch-file scheduled-tasks windows-scripting
这是我的情况:
我的问题是我需要我的 BAT 静默运行,但事实并非如此。因此,我想使用如下所示的 Windows 脚本启动它:
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "C:\Batch Files\syncfiles.bat" & Chr(34), 0
Set WshShell = Nothing
Run Code Online (Sandbox Code Playgroud)
不幸的是,当我安排这个脚本时,它完成了工作,但立即返回,使 Windows 调度程序认为任务已经完成,而实际上 BAT 只是在某处自行运行。
因此,Windows 将在 10 分钟后再次重新安排作业并进行多次运行。
我需要的:
有没有办法告诉 Windows 脚本文件在继续/退出之前等待 .Run 命令的目标完成?基本上,我希望它表现得像我启动了另一个线程,然后在它上面调用了 join,所以它做的事情和 BAT 一样,但不显示控制台窗口。
其他解决方案
告诉我任何其他方式让这个 BAT 静默执行(powershell 命令,无论如何),我也会接受它作为解决方案。只是不要告诉我围绕它编写完整的 C++/C# 应用程序,这太过分了:)
运行: Windows Server 2008 R2
我认为对于可选的第三个参数,您需要的只是 TRUE
WshShell.Run chr(34) & "C:\Batch Files\syncfiles.bat" & Chr(34), 0, TRUE
Run Code Online (Sandbox Code Playgroud)
疯狂就在这里……
创建一个文件invisible.vbs:
CreateObject("Wscript.Shell").Run """" & WScript.Arguments(0) & """", 0, True
Run Code Online (Sandbox Code Playgroud)
然后在任务计划程序中,像这样调用您的脚本:
wscript.exe "C:\Batch Files\invisible.vbs" "C:\Batch Files\syncfiles.bat"
Run Code Online (Sandbox Code Playgroud)
我测试了它,这确实有效:没有命令窗口,任务被认为正在运行,直到批处理脚本结束。
信用转到https://superuser.com/a/62646/40362。
对于2008 R2,使invisible.vbs有此内容,直接执行即可。它将静默运行 BAT 并等待完成。
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "D:\IUpdateScript.bat", 0, true
Run Code Online (Sandbox Code Playgroud)