如何编写DOS批处理文件从1.jpg重命名为0001.jpg?

时间:2013-04-12 08:24:18

标签: batch-file dos

如何编写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....

2 个答案:

答案 0 :(得分: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门会停止尝试重命名,如果需要防止尝试重命名(如果新文件名已存在),则可以再次对其进行门控。 / p>

答案 1 :(得分: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 overcome ASCII sort order with regard to file names when using batch scripts?当文件名在数字前面有固定部分时。