3

我通过命令行( win7 cmd)并行执行 4 个任务:

start defrag /A c:
start defrag /A d:
start defrag /A e:
start  defrag /A f:
dir 

但是该dir命令在第一行之后立即执行。

我希望dir在所有 4 个完成后执行命令。

我该怎么做 ?

4

3 回答 3

5

试试这个:

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 
于 2012-10-26T13:43:59.873 回答
1

这将导致defrag /A [drive]为 c、d、e 和 f 运行,等待每个完成,然后再开始下一个。最后,它将退出并运行dir

for %%i in (c d e f) do start "" /B /WAIT defrag /A %%i:

dir
于 2013-07-24T06:51:04.343 回答
1

您可以使用该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
于 2018-03-07T21:10:47.153 回答