我想将文件从1-example.txt更改为200-example.txt(只需更改起始编号),代码如下:
@Echo off
setlocal ENABLEDELAYEDEXPANSION
SET /a counter=200
for /F %%i in ('dir /b/a-d *.txt') do (
for /F "usebackq tokens=1,* delims=-" %%c in ('%%i') do (
SET filename=%%i
:: Dunno how to fix
echo !filename:%%c=%counter%!
:: ren %%i %%newfilename
)
SET /a counter+=1
)
但它不起作用,它始终显示 200 。当我将%counter%更改为!counter! 它没有显示任何内容。如何修理柜台?
答案 0 :(得分:3)
您可以使用此代码:
@echo off
setlocal EnableExtensions EnableDelayedExpansion
set "Counter=200"
for /F %%I in ('dir /A-D /B *-*.txt 2^>nul') do (
for /F "tokens=1* delims=-" %%A in ("%%~nxI") do set "NewFileName=!Counter!-%%B"
ren "%%~fI" "!NewFileName!"
set /A Counter+=1
)
endlocal
由于使用%%~nxI
,只有带有文件扩展名的文件名由内部 FOR 循环处理为字符串。
第一个短划线字符的剩余部分被分配给循环变量A
,由于是旧数字而不感兴趣。
第一个破折号的所有权利都分配给循环变量B
,用于构建具有当前计数器值的新文件名。新文件名必须没有路径。
要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。
echo /?
endlocal /?
for /?
ren /?
set /?
setlocal /?