0

我有这部分批处理脚本正在执行以下操作:

- 在每个子文件夹下,它会重命名文件:'jpg,gif,png' 到 'Poster 1', 'Poster 2', 'Poster 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 命令中的错误(请忽略:上一个 FOR 命令中有一个错误,如果文件 中只有两个图像文件,它会重命名一个文件两次):

if !i! neq 0 if not exist "Poster 1.*" (
  ren "Poster !i!.*" "Poster 1.*"
  echo ...and renamed back to "Poster 1"
)

!!!!!!我需要的是:!!!!!!-如果文件夹中只有一个文件
, 我需要添加一个要求将其重命名为“海报”,因为没有它,此脚本会将其重命名为“海报 1” 谢谢!

4

2 回答 2

1

只是一个合乎逻辑的解决方案,在do循环之后,您可以再次检查'i'的值,如果它是1,那么您可以再次执行重命名操作[Rename Poster1 to Poster]。希望这可以帮助

于 2012-12-27T12:49:17.797 回答
0

补丁if命令后:

if !i! equ 1 ren "Poster 1.*" "Poster.*"

编辑

如果您在 patch 命令之后插入上一行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.*"

安东尼奥

于 2012-12-27T19:55:31.357 回答