Windows脚本-无提示运行,但等待完成/返回正确代码

Windows脚本-无提示运行,但等待完成/返回正确代码,windows,deployment,batch-file,scheduled-tasks,windows-scripting,Windows,Deployment,Batch File,Scheduled Tasks,Windows Scripting,以下是我的情况: 我有一个BAT文件,运行时间很长(1分钟到70分钟) 我用Windows scheduler计划每10分钟运行一次 如果它在运行时再次调度,则不会发生任何事情(这很好) 我的问题是,我需要我的球棒安静地跑,但事实并非如此。因此,我想使用Windows脚本启动它,如下所示: Set WshShell = CreateObject("WScript.Shell") WshShell.Run chr(34) & "C:\Batch Files\syncfiles.bat

以下是我的情况:

  • 我有一个BAT文件,运行时间很长(1分钟到70分钟)
  • 我用Windows scheduler计划每10分钟运行一次
  • 如果它在运行时再次调度,则不会发生任何事情(这很好)
我的问题是,我需要我的球棒安静地跑,但事实并非如此。因此,我想使用Windows脚本启动它,如下所示:

Set WshShell = CreateObject("WScript.Shell") 
WshShell.Run chr(34) & "C:\Batch Files\syncfiles.bat" & Chr(34), 0
Set WshShell = Nothing
不幸的是,当我调度这个脚本时,它完成了任务,但立即返回,这使得Windows调度程序认为任务已经完成,而实际上BAT只是在某个地方自行运行

因此,Windows将在10分钟后重新安排作业并多次运行

我需要什么:

是否有方法告诉Windows脚本文件在继续/退出之前等待.Run命令的目标完成?基本上,我希望它表现得像我启动了另一个线程,然后对其调用了join,因此它执行与BAT相同的操作,但不显示控制台窗口

其他解决方案

告诉我有没有其他方法可以让这个BAT安静地执行(powershell命令,无论什么),我也会接受它作为解决方案。只是不要让我写一篇完整的C++/C应用程序,这太过分了:)



正在运行:Windows Server 2008 R2

我认为对于可选的第3个参数,您所需要的一切都是正确的

WshShell.Run chr(34) & "C:\Batch Files\syncfiles.bat" & Chr(34), 0, TRUE

疯狂来了

创建一个文件
不可见.vbs

CreateObject("Wscript.Shell").Run """" & WScript.Arguments(0) & """", 0, True
然后在任务计划程序中,按如下方式调用脚本:

wscript.exe "C:\Batch Files\invisible.vbs" "C:\Batch Files\syncfiles.bat"
我对它进行了测试,这确实有效:没有命令窗口,任务被认为在批处理脚本结束之前一直在运行

功劳归于我


对于2008 R2 make invisible.vbs,有此内容,直接执行即可。它将无声地运行BAT并等待完成

Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "D:\IUpdateScript.bat", 0, true

我将尝试这两种方法,并选择一种效果最好的:)谢谢。这一种没有达到我所需要的效果。它确实会在后台运行该进程,但wscript.exe“C:\Batch Files\invisible.vbs”“C:\Batch Files\syncfiles.bat”调用会立即返回,这仍然意味着它会得到双重调度+1获取帮助,尽管我了解了更多:)不在我的计算机上(win7 x64)-计划任务的状态一直在运行,直到批处理文件结束。我想我应该指定操作系统。在我的Windows7机器上,执行bat文件的计划任务在我的机器上是隐藏的,所以这不是问题。我正在部署到Windows Server 2008 R2 Enterprise,不幸的是,现在我发现了这个问题。我将尝试这两种方法,并选择最有效的:)谢谢。+1感谢您的帮助,sync true标志肯定是我遇到的第一个问题。