目录
1 源码
::
%~1
%%~xi
/a
/i
!var!
3 拓展学习
1 源码
@echo off
setlocal enabledelayedexpansion
set count=10000
for /f "delims=" %%i in ('dir /b *.jpg,*.png,*.bmp,*.jpeg,*.gif,*.webp') do call:Rename "%%~i"
pause
exit
:Rename
set /a count+=1
if /i "%~1"=="!count:~1!%~x1" goto :eof
if exist "!count:~1!%~x1" goto Rename
echo 改名:%1 !count:~1!
ren "%~1" "!count:~1!%~x1"
goto :eof
2 难点语法解析
::
:: 注释
enabledelayedexpansion
启用延迟的环境变量扩展,直到出现匹配的 endlocal 命令,无论 setlocal 命令之前的设置如何。
当参数以引号开头时,%~1会自动将引号删除。 https://zhidao.baidu.com/question/1429823319385344259.html
%%~xi
扩充%%i 到文件的扩展名。
/a
是指定一个变量等于一串运算字符 https://www.jb51.net/article/107289.htm
goto :eof
运行 goto :eof 后,CMD 返回并将等待下一命令。
/i
开关(如果指定)说明要进行的字符串比较不分大小写 https://zhidao.baidu.com/question/550606651.html
!var!
这是最后一种常见的变量形式,同时也是一种不太好理解的形式,需要记住一点,这种变量与延迟环境变量扩展有关
3 拓展学习
:: 拓展学习 https://zhidao.baidu.com/question/140615925408016685.html
@echo off
setlocal enabledelayedexpansion
::设置文件
set file=key.txt
set skip=0
(for /f "tokens=1,2 delims= " %%a in ('type "%file%"') do (
set "str=%%~a %%~b"
if !skip! equ 1 (
echo !str!
) else (
if %%~b lss 5 (
set NowKey=%%~a
set /a count=%%~b+1
call echo %%str:%%~a %%~b=%%~a !count!%%
set skip=1
) else (
echo !str!
)
)
))>$NewKey$
move $NewKey$ "%file%" >nul
if defined NowKey (
echo 当前使用 Key 是:!NowKey! 次数:!count!
) else (
echo 当前文本中所有 Key 都已经达到使用次数。
)
pause