level 1
RL🌐
楼主
::期望:无论选择什么后缀,loopCount都应该是10次!
::问题描述:选择【*】后缀的时候,loopCount为10次,正确;但只要是【非*】后缀,loopCount都会是11次,错误!!
@璐村惂鐢ㄦ埛_000076K馃惥 off
setlocal enabledelayedexpansion
set POSTFIX=.abc
::chcp 65001
::如果中文乱码,去掉chcp 65001的注释看看效果
set DIR=d:\test1
dir %DIR% || md %DIR% && goto :CreateFile
:Main
echo 进入主程序,任意继续...
pause >nul
set prefix=pre%random%fix
set /a num=0
set /p t=请选择输入后缀(输入0为星*后缀,输入其它为abc后缀):
if "%t%" equ "0" (
set EXT=.*
) else (
set EXT=%POSTFIX%
)
echo !!!!注意!!!选择的——————————————————————---【后缀是【%EXT%】】---!!!
::【无论进入哪个分支,loopCount为10符合预期】
::1、较稳定重现情况【符合预期】:cmd命令调用文件,后缀【先.*后.abc】交替选择执行,每次loopCount都是10。
::2、可能重现情况【小概率有一次机会符合预期】:删除创建好的文件,关机,待电脑冷却完毕,开机,双击.bat【先.*后.abc】,可能会出现loop为10的情况。
::::::::::::::::::选择非*后缀不符合预期的代码块::::::::::::::::::::::::::::::::
if "%EXT%" equ "%POSTFIX%" (
for %%i in ("%DIR%\*%EXT%") do (
set /a num+=1
ren "%%i" "%prefix%!num!%%~xi"
echo loopCount---------------------------------------!num!--进入【1】分支
)
) else (
for %%i in ("%DIR%\*%EXT%") do (
set /a num+=1
ren "%%i" "%prefix%!num!%EXT%"
echo loopCount---------------------------------------!num!--进入【2】分支
)
)
::::::::::::::::::选择非*后缀不符合预期的代码块::::::::::::::::::::::::::::::::
echo 文件改名完成,任意键退出...
pause >nul
goto :EOF
:CreateFile
echo 首次运行,自动创建测试文件,任意继续...
pause >nul
for /l %%i in (1,1,10) do (
echo.>"%DIR%\%random%-%%i%POSTFIX%"
)
goto :Main
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
2019年09月19日 08点09分
1
::问题描述:选择【*】后缀的时候,loopCount为10次,正确;但只要是【非*】后缀,loopCount都会是11次,错误!!
@璐村惂鐢ㄦ埛_000076K馃惥 off
setlocal enabledelayedexpansion
set POSTFIX=.abc
::chcp 65001
::如果中文乱码,去掉chcp 65001的注释看看效果
set DIR=d:\test1
dir %DIR% || md %DIR% && goto :CreateFile
:Main
echo 进入主程序,任意继续...
pause >nul
set prefix=pre%random%fix
set /a num=0
set /p t=请选择输入后缀(输入0为星*后缀,输入其它为abc后缀):
if "%t%" equ "0" (
set EXT=.*
) else (
set EXT=%POSTFIX%
)
echo !!!!注意!!!选择的——————————————————————---【后缀是【%EXT%】】---!!!
::【无论进入哪个分支,loopCount为10符合预期】
::1、较稳定重现情况【符合预期】:cmd命令调用文件,后缀【先.*后.abc】交替选择执行,每次loopCount都是10。
::2、可能重现情况【小概率有一次机会符合预期】:删除创建好的文件,关机,待电脑冷却完毕,开机,双击.bat【先.*后.abc】,可能会出现loop为10的情况。
::::::::::::::::::选择非*后缀不符合预期的代码块::::::::::::::::::::::::::::::::
if "%EXT%" equ "%POSTFIX%" (
for %%i in ("%DIR%\*%EXT%") do (
set /a num+=1
ren "%%i" "%prefix%!num!%%~xi"
echo loopCount---------------------------------------!num!--进入【1】分支
)
) else (
for %%i in ("%DIR%\*%EXT%") do (
set /a num+=1
ren "%%i" "%prefix%!num!%EXT%"
echo loopCount---------------------------------------!num!--进入【2】分支
)
)
::::::::::::::::::选择非*后缀不符合预期的代码块::::::::::::::::::::::::::::::::
echo 文件改名完成,任意键退出...
pause >nul
goto :EOF
:CreateFile
echo 首次运行,自动创建测试文件,任意继续...
pause >nul
for /l %%i in (1,1,10) do (
echo.>"%DIR%\%random%-%%i%POSTFIX%"
)
goto :Main
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
