0

如何编写 DOS 批处理文件以重命名任何子目录中的多个文件

1.jpg
10.jpg
11.jpg
12.jpg
2.jpg
3.jpg
4.jpg
5.jpg
6.jpg
7.jpg
8.jpg
9.jpg

这不是合乎逻辑的安排,我希望它

1.jpg
2.jpg
3.jpg
4.jpg
5.jpg
6.jpg
7.jpg
8.jpg
9.jpg
10.jpg
11.jpg
12.jpg

将 000 放在它前面作为>>

0001.jpg
0002.jpg
0003.jpg
0004.jpg....
4

2 回答 2

3
@ECHO OFF
SETLOCAL enabledelayedexpansion
FOR /l %%i IN (1,1,999) DO (
SET newname=000%%i
SET newname=!newname:~-4!
IF EXIST %%i.jpg ECHO REN %%i.jpg !newname!.jpg
)

由于您的姓名不包含任何非字母数字字符,因此这是一项相当简单的任务。

更改到所需的子目录,在循环中获取数字 1..999,以“000”为前缀,然后获取最后 4 个字符并进行重命名。

我已经包含了一个ECHO,所以简单地报告了操作。删除ECHO关键字以执行重命名。

IF EXIST如果原始名称不存在(这将生成丑陋的错误消息),门将停止尝试重命名,并且如果需要,如果新文件名已经存在,则可以再次门控以防止尝试重命名。

于 2013-04-12T08:38:38.203 回答
0
@echo off
setlocal EnableDelayedExpansion
for %%a in (*.*) do (
   set name=0000%%a
   if not exist !name:~-8! ECHO ren %%a !name:~-8!
)

您可以在此处查看更通用的方法:How to override ASCII sort order with about file names when using batch scripts? 当文件名可能在数字之前有固定部分时。

于 2013-04-12T09:16:34.020 回答