我有一個Windows調度程序調用的Windows批處理文件。當我試圖讓多個Windows調度程序任務試圖同時運行批處理文件時,該批處理文件被第一個進程鎖定,並且所有其他實例都失敗。在Windows中同時運行批處理文件的多個實例?
Windows中是否有辦法同時運行批處理文件的多個實例?
我的腳本是一個簡單的它是所有:
set java_classpath
java javaClass
我有一個Windows調度程序調用的Windows批處理文件。當我試圖讓多個Windows調度程序任務試圖同時運行批處理文件時,該批處理文件被第一個進程鎖定,並且所有其他實例都失敗。在Windows中同時運行批處理文件的多個實例?
Windows中是否有辦法同時運行批處理文件的多個實例?
我的腳本是一個簡單的它是所有:
set java_classpath
java javaClass
沒有什麼固有限制的,可以同時運行同一個腳本的進程數批處理文件力學。實際的批處理腳本在運行時未鎖定。實際上,可以在運行時修改批處理腳本,但這通常是一個非常糟糕的主意。
但批處理腳本可以採取任何數量的操作來防止同時運行。最明顯的是如果腳本嘗試將輸出重定向到特定文件(常量路徑和名稱)。輸出重定向建立一個獨佔鎖,它將阻止任何其他進程獲得相同的鎖。
另一種可能性是您的腳本可能會調用外部命令或程序,以某種方式建立排他鎖。
無論哪種方式,都不應該阻止多個進程同時啓動相同的腳本。但是,如果腳本建立了獨佔鎖定,則一個(或多個)實例可能會過早崩潰或退出,或者似乎掛起,這取決於如何處理失敗的鎖定採集。
除非您發佈實際的腳本,否則沒有任何方法可以更具體。但是,如果它是一個很長的腳本,那麼你應該試圖在發佈之前找出發生問題的位置。
在問題中添加了我的批處理腳本。我的批處理是簡單的,它所做的就是運行設置java類路徑並運行java類 – user2154424
在批處理腳本本身中肯定沒有會導致問題的東西,但java是可以建立獨佔性的外部程序的示例鎖。你的java類中必須有一些阻止並行運行的東西。這不是批處理文件問題。 – dbenham
Windows 8的任務調度程序有以下幾個選項(在最後,「設置」選項卡): 如果任務已經運行,則遵循以下規則:
也許你應該更改此設置。而且,我建議你看看http://serverfault.com並在那裏發帖。
您是否嘗試過使用%systemroot%\cmd.exe /K C:\path\batchfile.bat
來調用您的批處理文件?用/ K每次打開一個新的cmd實例時,猜測它是shell而不是讓你感到奇怪的文件。
的人來到這裏,從谷歌只是在尋找一種方式來同時運行.bat文件的多個實例,一個簡單的方法是將這個腳本:
set N=3
for /L %%i in (1,1,%N%) do (
start yourscript.bat
)
如果您運行的批處理文件的同時多個實例在任務調度程序之外,它們運行嗎? –
沒有窗口鎖定正在運行該文件的當前進程的文件。 – user2154424
難道是批處理文件有一些重定向到另一個文件,並且這個文件被鎖定? Windows不鎖定批處理文件,我寫了一些批處理文件,在運行時修改自己。 –