如何编写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....
答案 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?当文件名在数字前面有固定部分时。