批处理:加载栏不起作用
Batch: loading bar won't work
我已经完成了一个基本的加载栏,但我想不出如何让侧面不随加载栏移动。这是我的代码:
@echo off
title Loading...
color 0a
set max=11
set num=%~1
set load=
set/a loadnum=0
:Loading
set load=%load%²
set loadnum1=%loadnum1%
cls
echo Loading ""
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º%load%%loadnum1% º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
ping localhost -n 2 >nul
set/a loadnum=%loadnum% +1
set/a loadnum1=%loadnum1% -1
if %loadnum%==16 goto done
goto Loading
:done
cls
timeout 1 >nul
title
color 49
setlocal enabledelayedexpansion
您需要的是可变数量的尾随空格。或多或少地保留你所拥有的...这是一种方法。
@echo off
setlocal enabledelayedexpansion
title Loading...
color 0a
set max=19
set load=
set /a loadnum=0
set /a loadnum1=0
set "spaces= "
:Loading
set load=%load%²
set /a numspaces=%max%-1+%loadnum1%
set "displayspaces=!spaces:~0,%numspaces%!
set loadnum1=%loadnum1%
cls
echo Loading ""
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º%load%%displayspaces%º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
ping localhost -n 2 >nul
set /a loadnum+=1
set /a loadnum1+=-1
if %loadnum% LSS %max% goto :Loading
endlocal
在此解决方案中,只需更改一个数字即可更轻松地修改负载栏的宽度;它还最大限度地减少了屏幕上的闪烁,将输出命令封装在一个代码块中,该代码块的执行速度比单行代码快。
@echo off
setlocal EnableDelayedExpansion
set max=16
title Loading...
color 0a
set "top=É"
set "spaces="
set "bottom=È"
for /L %%i in (1,1,%max%) do (
set "top=!top!Í"
set "spaces=!spaces! "
set "bottom=!bottom!Í"
)
set "top=!top!»"
set "bottom=!bottom!¼"
set /A loadnum=0, loadNum1=max-1
set "load="
:Loading
set "load=%load%²"
(
cls
echo Loading ""
echo %top%
echo º%load%!spaces:~0,%loadnum1%!º
echo %bottom%
)
ping localhost -n 2 >nul
set /A loadnum+=1, loadnum1-=1
if %loadnum% lss %max% goto Loading
cls
timeout 1 >nul
title
color
我已经完成了一个基本的加载栏,但我想不出如何让侧面不随加载栏移动。这是我的代码:
@echo off
title Loading...
color 0a
set max=11
set num=%~1
set load=
set/a loadnum=0
:Loading
set load=%load%²
set loadnum1=%loadnum1%
cls
echo Loading ""
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º%load%%loadnum1% º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
ping localhost -n 2 >nul
set/a loadnum=%loadnum% +1
set/a loadnum1=%loadnum1% -1
if %loadnum%==16 goto done
goto Loading
:done
cls
timeout 1 >nul
title
color 49
setlocal enabledelayedexpansion
您需要的是可变数量的尾随空格。或多或少地保留你所拥有的...这是一种方法。
@echo off
setlocal enabledelayedexpansion
title Loading...
color 0a
set max=19
set load=
set /a loadnum=0
set /a loadnum1=0
set "spaces= "
:Loading
set load=%load%²
set /a numspaces=%max%-1+%loadnum1%
set "displayspaces=!spaces:~0,%numspaces%!
set loadnum1=%loadnum1%
cls
echo Loading ""
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º%load%%displayspaces%º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
ping localhost -n 2 >nul
set /a loadnum+=1
set /a loadnum1+=-1
if %loadnum% LSS %max% goto :Loading
endlocal
在此解决方案中,只需更改一个数字即可更轻松地修改负载栏的宽度;它还最大限度地减少了屏幕上的闪烁,将输出命令封装在一个代码块中,该代码块的执行速度比单行代码快。
@echo off
setlocal EnableDelayedExpansion
set max=16
title Loading...
color 0a
set "top=É"
set "spaces="
set "bottom=È"
for /L %%i in (1,1,%max%) do (
set "top=!top!Í"
set "spaces=!spaces! "
set "bottom=!bottom!Í"
)
set "top=!top!»"
set "bottom=!bottom!¼"
set /A loadnum=0, loadNum1=max-1
set "load="
:Loading
set "load=%load%²"
(
cls
echo Loading ""
echo %top%
echo º%load%!spaces:~0,%loadnum1%!º
echo %bottom%
)
ping localhost -n 2 >nul
set /A loadnum+=1, loadnum1-=1
if %loadnum% lss %max% goto Loading
cls
timeout 1 >nul
title
color