我在平行經由命令行(WIN7 CMD)執行4項任務:CMD - 等待並行命令行完成?
start defrag /A c:
start defrag /A d:
start defrag /A e:
start defrag /A f:
dir
然而dir
命令的第一行之後執行。
我希望dir
命令在所有4完成後執行。
我該怎麼辦?
我在平行經由命令行(WIN7 CMD)執行4項任務:CMD - 等待並行命令行完成?
start defrag /A c:
start defrag /A d:
start defrag /A e:
start defrag /A f:
dir
然而dir
命令的第一行之後執行。
我希望dir
命令在所有4完成後執行。
我該怎麼辦?
試試這個:
start defrag /A c:
start defrag /A d:
start defrag /A e:
start defrag /A f:
:StartLoop
:: Check whether any of the defrags are running...
tasklist|Findstr /i /c:"defrag"
:: Exiting the loop if tasklist didn't find any defrags.
If %errorlevel% NEQ 0 (
GoTo :ExitLoop
)
choice /T 10 /D Y /M "Waiting for 10 seconds..."
GoTo :StartLoop
:ExitLoop
dir
這將導致defrag /A [drive]
爲C,d,e和f運行,等待每個開始下一個之前完成。最後,它將退出並運行dir
。
for %%i in (c d e f) do start "" /B /WAIT defrag /A %%i:
dir
可以使用defrag /M
選項在多個驅動器啓動磁盤碎片整理,然後用defrag /T
選項等待每個來完成。 defrag /T
等待只有一個捲來完成,但因爲要等待所有的人,這會爲你工作:
REM This will start defrag running concurrently on all four drives:
defrag c: d: e: f: /M
REM Wait for each drive to complete. But since you want to wait of them, that is okay.
REM The order is unimportant
defrag c: /T
defrag d: /T
defrag e: /T
defrag f: /T
REM They are all done. You are set to whatever you want to do next.
dir
感謝如何將'%ERRORLEVEL%'會得到它的價值? (它是在選擇之前...) –
_FINDSTR將%ERRORLEVEL%設置爲0(False),如果在至少一個文件的至少一行中發現匹配。附:爲了在睡眠後喚醒我的硬盤驅動器並使它們旋轉,我正在做。碎片整理/ A將運行最小的測試,所以它很好。 (dir/s剛剛從fat/ntfs讀取 - 所以這個命令真的讓它們旋轉) –
isnt'::'就像'rem'? –