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

发布于 2025-01-02 20:03:09 字数 221 浏览 2 评论 0原文

我有一个充满图像的文件夹,其格式为 filename.com_XXX_IMG_000.jpg。出现此问题的原因是文件名中包含 .com,它使我用来将其上传到网络空间的软件感到困惑。

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

任何帮助将非常感激,提前致谢。

I have a folder full of images which have a format filename.com_XXX_IMG_000.jpg. The issue comes because the file name has a .com in it, it confuses the the software that I am using to upload it to a webspace.

I need to create a batch file that gets all the images in a folder and renames all of them from filename.com_XXX_IMG_000.jpg => filename_XXX_IMG_000.jpg.

Any help would be greatful, thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一身仙ぐ女味 2025-01-09 20:03:10

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

@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=.. 处分割文件名。 code>,在你的情况下分为三个部分
  • tokens=1,2,3 返回三个包含各个名称部分的变量(%f%g%h)
  • enabledelayedexpansion 打开动态变量处理,
  • 您可以使用变量进行字符串操作:%foo:~0,3% 返回 %foo 的前三个字符%。
  • 启用延迟扩展后,您可以使用 ! 而不是 % 来访问更改其值的变量,
  • > 必须转义或 echo 不会打印它,因此 ^>
  • 阅读更多内容 字符串操作DOS

Since you want to do it in a batch file:

@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
)

A few notes

  • for loop variables are single letter, like this: %f
  • in a batch file, the % must be escaped, so %f becomes %%f
  • delims=. splits the filenames at the ., in your case into three parts
  • tokens=1,2,3 returns three variables containing the individual name parts (%f, %g and %h)
  • enabledelayedexpansion switches on dynamic variable handling
  • you can do string manipulation with variables: %foo:~0,3% returns the first three characters of %foo%.
  • with delayed expansion enabled, you can access variables that change their values by using ! instead of %
  • the > must be escaped or echo won't print it, hence ^>
  • read some more on String Manipulation in DOS
单身狗的梦 2025-01-09 20:03:10

阅读 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命令

read HELP FOR and try the following....

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

you need to enable delayed expansion because you need to expand a variable inside the for loop.

the loops iterates over all the jpg files in the current directory and for each file it extracts its filename using the ~n syntax, and then it removes all the occurences of .com by replacing them with an empty string. Read HELP SET

after careful testing, remove the echo command

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文