添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
精彩文章免费看

按数字递增(1~xx, 000001~00xxxx)批量重命名文件的批处理 - 2021-03-08

按数字递增批量重命名文件的批处理

新建.txt文件,写入以下代码,修改后缀名为.bat,放在需要重命名的文件夹中,双击执行

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set /A num=0
FOR /F "tokens=*" %%i in ('dir /A-D /B /OD /TC') do (
    IF NOT "%%i"=="%~n0%~x0" (
        set /A num+=1
        ren "%%i" "这里可以加前缀!num!%%~xi"
ENDLOCAL

按000001这类格式递增批量重命名ren.bat

@echo off SETLOCAL ENABLEDELAYEDEXPANSION set /A num=0 FOR /F "tokens=*" %%i in ('dir /A-D /B /OD /TC') do ( IF NOT "%%i"=="%~n0%~x0" ( set /A num+=1 if !num! LSS 10 ( ren "%%i" "00000!num!%%~xi" ) else if !num! LSS 100 ( ren "%%i" "0000!num!%%~xi" ) else if !num! LSS 1000 ( ren "%%i" "000!num!%%~xi" ) else if !num! LSS 10000 ( ren "%%i" "00!num!%%~xi" ) else ( ren "%%i" "0!num!%%~xi" ENDLOCAL

按数字递增批量重命名文件的批处理

本文链接:http://oicu.cc.blog.163.com/blog/static/12303947120091163372228/

原文链接:http://www.newsmth.net/bbscon.php?bid=34&id=17370

又来陈年老帖了……以前没有工具的时候就喜欢写点批处理来解决问题,特别
是在一个没有管理员权限、没有外网网络、没有光驱又封了USB的环境,批处
理可是发挥了大作用。

发信人: oicu (Oh! I see you!), 信区: DOS
标 题: 按数字递增批量重命名文件的批处理
发信站: 水木社区 (Sat Dec 16 02:33:49 2006), 站内

一时兴起写了个简单的批量重命名的批处理:

从数字1递增批量重命名ren.bat

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set /A num=0
FOR /F "tokens=*" %%i in ('dir /A-D /B /OD /TC') do (
    IF NOT "%%i"=="%~n0%~x0" (
        set /A num+=1
        ren "%%i" "!num!%%~xi"
ENDLOCAL

exit 按 00001 这类格式递增批量重命名 ren.bat :

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set /A num=0
FOR /F "tokens=*" %%i in ('dir /A-D /B /OD /TC') do (
    IF NOT "%%i"=="%~n0%~x0" (
        set /A num+=1
        if !num! LSS 10 (
            ren "%%i" 0000!num!%%~xi
        ) ELSE (
            if !num! LSS 100 (
                ren "%%i" 000!num!%%~xi
            ) ELSE (
                if !num! LSS 1000 (
                    ren "%%i" 00!num!%%~xi
                ) ELSE (
                    if !num! LSS 10000 ren "%%i" 0!num!%%~xi
ENDLOCAL

如果觉得 0 多了,可以用下面的批处理来去掉,默认是去1个,要去多少个就
把 !name:~1! 中的数字 1 改成要去的个数,改这个批处理要比改前面的批处理
方便一些,所以写了这个用:

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set name=
FOR /F "tokens=*" %%i in ('dir /A-D /B /OD /TC') do (
    IF NOT "%%i"=="%~n0%~x0" (
        set name=%%i
        set name=!name:~1!
        ren "%%i" "!name!"
ENDLOCAL

上面的批处理要和文件放在一个目录里,命名后删除批处理文件即可。

直接使用dir的话,缺点是重命名的时候把批处理本身及子文件夹也改名了,而且
所得文件名字不能连续排序(批处理文件可能占了中间某个序号),因此用dir参
数进行排除文件夹内的子文件夹以及排序(排序目的就是把批处理排到最后)。

还有就是重名现象不好解决,如果原来已经含有一个重命名后可能会出现的名称,
名称被占用了程序就不能继续运行。可以事先用系统的重命名功能命名一次,方
法是选择要重命名的所有文件,Ctrl+a或者选择第一个再按住Shift不放,再选最
后一个进行连续选择,右键点击其中一个文件,选择重命名,然后随便写一个名
字,你将看到系统的批量命名是以括号内数字递增的。

排序参数的说明:

FOR /F "tokens=*" %%i in ('dir /A-D /B /OD /TC') do (

中的/OD参数是按时间排序,使用的时候把批处理文件复制到文件夹里,那么批处
理文件的创建时间就是最后的了,解决了文件连续的问题。

如果用/O-E也可以,这样也能使批处理文件排在最后(扩展名是bat,b的优先级高,
用-号来颠倒顺序)。

/OD后再加/TC更准确些。

dir中/O和/T参数的说明:

/O 用分类顺序列出文件。

sortorder