Windows 批处理文件进度百分比
如何在windows批处理(cmd)文件中以百分比显示长时间运行的操作的进度?你能分享一些示例代码吗?以下是如何 注:此代码是answer的一个稍加修改的版本Windows 批处理文件进度百分比,windows,batch-file,cmd,Windows,Batch File,Cmd,如何在windows批处理(cmd)文件中以百分比显示长时间运行的操作的进度?你能分享一些示例代码吗?以下是如何 注:此代码是answer的一个稍加修改的版本 @echo关闭 对于('copy/Z'%~dpf0“nul')中的/f%%a,请设置“CR=%%a” 对于(1,1,10)DO中的/L%%n( 呼叫:显示进度%%n 10 ping localhost-n2>nul ) 回音完毕! 退出/b :显示进度 setlocal EnableDelayedExpansion 设置当前\u步骤=%1
@echo关闭
对于('copy/Z'%~dpf0“nul')中的/f%%a,请设置“CR=%%a”
对于(1,1,10)DO中的/L%%n(
呼叫:显示进度%%n 10
ping localhost-n2>nul
)
回音完毕!
退出/b
:显示进度
setlocal EnableDelayedExpansion
设置当前\u步骤=%1
设置总步数=%2
设置/a“进度=(当前步骤*100)/总步骤”
设置/p.“=Progress:!Progress!%%!CR!”以下是如何
注:此代码是answer的一个稍加修改的版本
@echo关闭
对于('copy/Z'%~dpf0“nul')中的/f%%a,请设置“CR=%%a”
对于(1,1,10)DO中的/L%%n(
呼叫:显示进度%%n 10
ping localhost-n2>nul
)
回音完毕!
退出/b
:显示进度
setlocal EnableDelayedExpansion
设置当前\u步骤=%1
设置总步数=%2
设置/a“进度=(当前步骤*100)/总步骤”
设置/p.“=Progress:!Progress!%%!CR!”具体取决于操作内容……同意。如果你能把你的操作分解成几个独立的步骤,那就很容易了。更多信息请参见我的答案。具体取决于操作是什么…是的,同意。如果你能把你的操作分解成几个独立的步骤,那就很容易了。更多信息请参见我的答案。我建议说明if!进步!EQU 100
执行真正的数字比较,因为==
强制进行字符串比较…只是说,为了可读性,将每个setlocal
与endlocal
匹配是一种很好的编码实践@SandePData这是一个有趣的!cr
将存储在变量中的回车符放入输出流,但%cr%
没有。你知道为什么后者不起作用吗?@SkipR有时会看到下面的链接来解释原因!是必需的,而不是%:将代码更改为set/p。“=进度:%Progress%%%!CR!”我建议声明if!进步!EQU 100
执行真正的数字比较,因为==
强制进行字符串比较…只是说,为了可读性,将每个setlocal
与endlocal
匹配是一种很好的编码实践@SandePData这是一个有趣的!cr
将存储在变量中的回车符放入输出流,但%cr%
没有。你知道为什么后者不起作用吗?@SkipR有时会看到下面的链接来解释原因!需要,而不是%:将代码更改为set/p.=Progress:%Progress%%!CR!“
@echo off
for /f %%a in ('copy /Z "%~dpf0" nul') do set "CR=%%a"
FOR /L %%n in (1,1,10) DO (
call :show_progress %%n 10
ping localhost -n 2 > nul
)
echo Done!
exit /b
:show_progress
setlocal EnableDelayedExpansion
set current_step=%1
set total_steps=%2
set /a "progress=(current_step * 100) / total_steps"
set /p ".=Progress: !progress!%%!CR!" <nul
if !progress! equ 100 echo.
exit /b