我有这部分批处理脚本正在执行以下操作:
- 在每个子文件夹中重命名文件:'jpg,gif,png'到'海报1','海报2','海报3'等等......(没有变化在扩展名上)
set i=0
for %%b in (*.jpg *.gif *.png) do (
set /A i+=1
ren "%%b" "Poster !i!%%~Xb"
echo File "%%b" renamed to "Poster !i!%%~Xb"
)
rem PATCH修复以前的FOR命令中的错误( PLEASE IGNORE: 在prev.FOR命令中有一个错误,它将一个文件重命名两次,如果只有两个文件夹中的图像文件 ):
if !i! neq 0 if not exist "Poster 1.*" (
ren "Poster !i!.*" "Poster 1.*"
echo ...and renamed back to "Poster 1"
)
!!!!!我需要的是:!!!!!
- 如果文件夹中只有一个文件,我需要添加一个要求,将其重命名为“海报”,因为没有它,此脚本会将其重命名为“海报1” “
谢谢!
答案 0 :(得分:1)
只是一个逻辑解决方案,在do循环之后,你可以再次检查'i'的值,如果它是1,那么你可以再次执行重命名操作[将Poster1重命名为Poster]。希望这有帮助
答案 1 :(得分:0)
在补丁if
命令之后:
if !i! equ 1 ren "Poster 1.*" "Poster.*"
编辑:
如果你在补丁if
命令之后插入前一行(如我所说),最终的代码就是:
set i=0
for %%b in (*.jpg *.gif *.png) do (
set /A i+=1
ren "%%b" "Poster !i!%%~Xb"
echo File "%%b" renamed to "Poster !i!%%~Xb"
)
rem PATCH to fix a bug in previous FOR command:
if !i! neq 0 if not exist "Poster 1.*" (
ren "Poster !i!.*" "Poster 1.*"
echo ...and renamed back to "Poster 1"
)
REM NEW COMMAND TO RENAME THE UNIQUE FILE TO "Poster":
if !i! equ 1 ren "Poster 1.*" "Poster.*"
安东尼奥