Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 批处理文件进度百分比_Windows_Batch File_Cmd - Fatal编程技术网

Windows 批处理文件进度百分比

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

如何在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
设置总步数=%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