2

這裏是我的情況:Windows腳本 - 潤物無聲,但等待完成/返回正確的代碼

  • 我有一個BAT文件,它需要很長的時間來運行(1分鐘至70分鐘)
  • 我與Windows調度安排它每10分鐘
  • 如果再調度,而它仍然在運行,沒有發生運行(這是好事)

我的問題爲t我需要我的英美菸草公司無聲地運行,而事實並非如此。所以,我想與Windows腳本啓動它類似如下:

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命令進展之前完成的目標/退出?基本上,我希望它像我啓動另一個線程,然後調用它加入,所以它會做與BAT相同的事情,但不顯示控制檯窗口。

其他解決方案

告訴我任何其他方式得到這個BAT默默地執行(PowerShell命令,等等),我會接受它作爲一個解決方案,以及。只是不要告訴我寫一個完整的圍繞它的C++/C#appliation,這是矯枉過正:)


運行:的Windows Server 2008 R2

回答

3

這裏去瘋狂...

創建一個文件invisible.vbs

CreateObject("Wscript.Shell").Run """" & WScript.Arguments(0) & """", 0, True 

然後在任務調度,打電話給你的腳本是這樣的:

wscript.exe "C:\Batch Files\invisible.vbs" "C:\Batch Files\syncfiles.bat" 

我測試了它,這確確實實的工作:沒有命令窗口,任務被認爲運行,直到批處理腳本結束。

貸記https://superuser.com/a/62646/40362


對於2008 R2使invisible.vbs有這樣的內容,而直接執行它。它會默默地運行BAT並等待完成。

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

我會嘗試這兩個,並選擇最好的一個:)謝謝。 – 2012-07-26 13:08:43

+0

這一個並不像我所需要的那樣工作。它確實在後臺運行進程,但wscript.exe「C:\ Batch Files \ invisible.vbs」「C:\ Batch Files \ syncfiles.bat」調用立即返回,這意味着它會重新計劃。 +1的幫助,雖然我學到了更多:) – 2012-07-26 13:54:29

+0

不在我的機器上(win7 x64) - 計劃任務的狀態是_running_,直到批處理文件結束。 – marapet 2012-07-26 15:05:21

4

我認爲,所有你需要的是真可選的第三個參數

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

我會嘗試這兩個,並選擇一個最好的作品:)謝謝。 – 2012-07-26 13:09:03

+1

+1謝謝你的幫助,同步真正的國旗肯定是我的第一個問題。 – 2012-07-26 15:59:02