Batch file 如何将文件重命名为文件夹名称+成批递增的数字?我得到重复的名字错误

Batch file 如何将文件重命名为文件夹名称+成批递增的数字?我得到重复的名字错误,batch-file,command-line,duplicates,file-rename,Batch File,Command Line,Duplicates,File Rename,我一直在尝试创建一个批处理文件,以便将我的文件重命名为: Foldername_01.jpg、Foldername_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

我一直在尝试创建一个批处理文件,以便将我的文件重命名为:

Foldername_01.jpg、Foldername_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循环中,捕获目录名

例如:

@设置计数=0 @对于/F Delims=%%I In'Dir/B/S/A-D-S*.jpg 2^>NUL'Do@ 对于%%J In%%~pI.Do@Set/A计数+=1 SetLocal EnableDelayedExpansion Ren%%I%%~nxJ_!计数!%%~席 端部 @停顿
1.您需要使用变量计数。2.因为没有提前读取完整的文件列表,所以可能会有一些文件被重命名两次;因此,在“dir/B/A:-D-H-S*.jpg”中使用/F eol=| delims=%%F设置/A计数+=1&ren%%F%~n0!计数mp4。3.Run只接受没有路径的第二个参数。@ COMPO,延迟扩展只是代码中的一个问题,所以我不认为它是一个副本,参见我的另一个评论…@ COMPO,这是我的一个错误,在编辑代码时,我尝试不同的文件格式可能是cause@Compo符合事实的起初我没有识别出有偏差的扩展名,我仍然不理解,因为更改扩展名不会转换文件,但可能这只是问题中的一个输入错误?..@Compo将文件结果转换为%\u nx0\u 1.jpg、%\u nx0\u 2.jpg等。计数现在正在进行。