首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Windows脚本-静默运行,但等待完成/返回正确的代码

Windows脚本-静默运行,但等待完成/返回正确的代码
EN

Stack Overflow用户
提问于 2012-07-26 06:13:14
回答 2查看 25.4K关注 0票数 4

这是我的情况:

  • 我有一个运行时间较长的BAT文件(1分钟到70分钟)
  • 我使用Windows计划程序将其计划为每10分钟运行一次
  • 如果它在仍在运行时再次计划,则什么也不会发生(这很好)

我的问题是,我需要我的BAT静默运行,但它不是。所以,我想使用如下所示的Windows脚本启动它:

代码语言:javascript
复制
Set WshShell = CreateObject("WScript.Shell") 
WshShell.Run chr(34) & "C:\Batch Files\syncfiles.bat" & Chr(34), 0
Set WshShell = Nothing

不幸的是,当我调度这个脚本时,它完成了工作,但立即返回,这让Windows调度程序认为任务已经完成了,而实际上蝙蝠只是在某个地方自己跑掉了。

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

我需要的:

有没有办法告诉Windows脚本文件在执行/退出之前等待.Run命令的目标完成?基本上,我希望它的行为就像我启动了另一个线程,然后在它上面调用join,所以它做了与BAT相同的事情,但没有显示控制台窗口。

其他解决方案

告诉我让这个BAT静默执行的任何其他方法(powershell命令,随便什么),我也会接受它作为解决方案。只是不要告诉我写一个完整的关于C++/C#的应用程序,那太夸张了:)

运行 Windows Server2008 R2

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-26 07:20:29

疯狂开始了..。

创建文件invisible.vbs

代码语言:javascript
复制
CreateObject("Wscript.Shell").Run """" & WScript.Arguments(0) & """", 0, True

然后在任务调度器中,像这样调用脚本:

代码语言:javascript
复制
wscript.exe "C:\Batch Files\invisible.vbs" "C:\Batch Files\syncfiles.bat"

我对它进行了测试,它确实起作用了:没有命令窗口,并且任务被认为在批处理脚本结束之前一直在运行。

功劳归功于https://superuser.com/a/62646/40362

对于2008年的R2,让invisible.vbs具有此内容,并直接执行它。它将静默地运行BAT并等待完成。

代码语言:javascript
复制
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "D:\IUpdateScript.bat", 0, true
票数 4
EN

Stack Overflow用户

发布于 2012-07-26 06:58:32

我认为对于可选的第三个参数,您所需要的都是真的。

代码语言:javascript
复制
WshShell.Run chr(34) & "C:\Batch Files\syncfiles.bat" & Chr(34), 0, TRUE
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11659456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档