批量文件重命名,后缀为01 02 03 04等等

批量文件重命名,后缀为01 02 03 04等等

我有很多带有类似关键字的文件,例如

computer-stock-photo.jpg 
computer-stock-picture.jpg
computer-picture.jpg

我想要做的是给连续的 2 位数字添加后缀,例如

computer-stock-photo-01.jpg, 
computer-stock-picture-02.jpg, 
computer-picture-03.jpg

此外,批处理脚本应该适用于任何扩展名,如 jpg 或 png。

我尝试过的脚本:

@echo off
setlocal disableDelayedExpansion
set "chars=0123456789"
for /f "eol=: delims=" %%F in ('dir /b /a-d *.jpg') do call :renameFile "%%F"
exit /b

:renameFile
setlocal enableDelayedExpansion
:retry
set "name="
for /l %%N in (1 1 8) do (
  set /a I=!random!%%36
  for %%I in (!I!) do set "name=!name!!chars:~%%I,1!"
)
echo if exist !name!.jpg goto :retry
endlocal & ren %1 %name%.jpg

上述脚本仅适用于 jpg 并且添加随机数而不是序列数。

答案1

如果您想让别人帮您编写一个脚本来实现您的目的,我相信您会想在 Stack Overflow 上发布这个问题。为了遵循此论坛的大纲,我将为您提供一个名为 Bulk Rename Utility 的程序的链接。它过去曾被其他 Stack Exchange 用户推荐过,似乎符合您的标准。

http://www.bulkrenameutility.co.uk/Main_Intro.php

答案2

文件重命名,后缀为 01 02 03 04 等

扔掉不合适的脚本。你不需要随机数,它也不处理.png文件。

我从头编写了一个新脚本,这比尝试修复损坏的脚本更容易。

使用以下批处理文件:

@echo off
setlocal enabledelayedexpansion
rem initialise counter
set /a "x=1"
rem process jpg and png files
for /f "usebackq tokens=*" %%i in (`dir /b *.jpg *.png`) do (
  rem split into name and extension
  set _name=%%~ni
  set _ext=%%~xi
  rem pad the counter to 2 digits
  set "y=0!x!"
  set "y=!y:~-2!"
  rem do the rename
  ren "%%i" "!_name!-!y!!_ext!"
  increment counter
  set /a "x+=1"
  )
endlocal

限制:

  • 仅限当前工作目录中的.jpg进程。.png
  • 仅处理最多99文件。

进一步阅读

  • Windows CMD 命令行的 AZ 索引- 与 Windows cmd 行相关的所有事物的绝佳参考。
  • 目录- 显示文件和子文件夹的列表。
  • 启用延迟扩展- 延迟扩展将导致变量在执行时而不是在解析时扩展。
  • 对于/f- 循环命令以执行另一个命令的结果。
  • 参数- 命令行参数(或参数)是传递到批处理脚本的任何值。
  • - 显示、设置或删除 CMD 环境变量。使用 SET 所做的更改将仅在当前 CMD 会话期间保留。
  • 变量- 提取变量的一部分(子字符串)。

相关内容