我一直试图创建一个批处理文件来将文件重命名为:
“文件夹名_01.jpg,文件夹名_02.jpg等...”
但是我的输出将第一个文件重命名为“%〜dp00.jpg”,其余的返回错误
“存在重复的文件名,或者找不到文件”
我的代码:
@echo off
set /a count = 0
for %%a in (*.jpg) do (
set /a count+=1
ren "%%a" "%%~dp0_%count%.jpg"
)
pause
我不明白为什么count变量没有在每个条目中加1,并且文件被重命名为“%〜dp0 + count + .ext”而不是其“文件夹名称+ count + .ext”]
您的问题可以通过在嵌套的for循环中,捕获目录名称中使用延迟扩展,用于增量变量来解决。
示例:
@Set "count=0"
@For /F "Delims=" %%I In ('Dir /B/S/A-D-S "*.jpg" 2^>NUL')Do @(
For %%J In ("%%~pI.")Do @(Set /A count+=1
SetLocal EnableDelayedExpansion
Ren "%%I" "%%~nxJ_!count!%%~xI"
EndLocal))
@Pause