使用批处理文件重命名文件夹中的多个图像

时间:2012-02-05 16:09:06

标签: file batch-file dos rename

我有一个文件夹,其格式为filename.com_XXX_IMG_000.jpg。问题出现是因为文件名中包含.com,它会混淆我用来将其上传到网站空间的软件。

我需要创建一个批处理文件来获取文件夹中的所有图像,并从filename.com_XXX_IMG_000.jpg =>重命名所有图像。 filename_XXX_IMG_000.jpg。

任何帮助都会很有意义,感谢提前。

2 个答案:

答案 0 :(得分:1)

由于您希望在批处理文件中执行此操作:

@echo off

for /f "delims=. tokens=1,2,3" %%f in ('dir /b *.jpg') do (
  setlocal enabledelayedexpansion

  set part=%%g

  if "!part:~0,3!"=="com" (
    set oldname=%%f.%%g.%%h
    set newname=%%f.!part:~4!.%%h
    echo "!oldname!" -^> "!newname!"
    ren "!oldname!" "!newname!"
  )

  endlocal
)

一些注意事项

  • for循环变量是单个字母,如下所示:%f
  • 在批处理文件中,%必须进行转义,因此%f变为%%f
  • delims=..的文件名拆分为三个部分
  • tokens=1,2,3返回包含各个名称部分的三个变量(%f%g%h
  • enabledelayedexpansion启用动态变量处理
  • 您可以使用变量进行字符串操作:%foo:~0,3%返回%foo%的前三个字符。
  • 启用延迟展开后,您可以使用!代替%
  • 访问更改其值的变量
  • 必须转发>echo不会打印它,因此^>
  • String Manipulation in DOS
  • 上阅读更多内容

答案 1 :(得分:1)

阅读HELP FOR并尝试以下内容....

@echo off
setlocal enabledelayedexpansion
for %%a in (*.jpg) do (
  set fn=%%~na
  set fn=!fn:.com=!
  echo REN "%%a" "!fn!.jpg"
)

您需要启用延迟扩展,因为您需要在for循环中展开变量。

循环遍历当前目录中的所有jpg文件,并且对于每个文件,它使用~n语法提取其文件名,然后通过将其替换为.com来删除它们的所有出现空字符串。阅读HELP SET

仔细测试后,删除echo命令