【发布时间】:2012-10-16 18:37:01
【问题描述】:
我通过命令行(win7 cmd)并行执行4个任务:
start defrag /A c:
start defrag /A d:
start defrag /A e:
start defrag /A f:
dir
但是dir 命令在第一行之后执行。
我希望dir 命令在所有 4 个完成后执行。
我该怎么做?
【问题讨论】:
我通过命令行(win7 cmd)并行执行4个任务:
start defrag /A c:
start defrag /A d:
start defrag /A e:
start defrag /A f:
dir
但是dir 命令在第一行之后执行。
我希望dir 命令在所有 4 个完成后执行。
我该怎么做?
【问题讨论】:
您可以使用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
【讨论】:
这将导致defrag /A [drive] 为 c、d、e 和 f 运行,等待每个完成后再开始下一个。最后,它将退出并运行dir。
for %%i in (c d e f) do start "" /B /WAIT defrag /A %%i:
dir
【讨论】:
试试这个:
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
【讨论】:
%errorlevel% 将如何获得它的价值? (它在选择之前......)
:: 与 rem 相同。感谢投票。 %errorlevel% 是一个环境变量,它告诉您前面的命令是如何执行的。如果命令正常,则该值为零,否则该值不为零。检查dostips.com,它是 DOS 脚本的绝佳来源。