求bat对多个文件夹中的文件按照文件的顺序以文件夹名对文件进行编号的方式批量重命名

因为文件的顺序编号的位数不一样,导致Windows下显示的文件顺序正确,而其他软件显示的文件顺序错乱。我现在有一个文件夹,里面包含很多特定名称的文件夹,文件夹里面有顺序编号的文件,我按照Windows下文件显示的顺序,对多个文件夹中的文件按照文件夹名对文件顺序编号重命名。Windows下的显示效果见图1.其他看图软件显示效果见图2,修改后的效果见图3。

先上测试效果图:

代码如下:

@echo off & title 批量重命名并序号补位 By 依梦琴瑶
cd /d %~dp0

::脚本放于主目录后执行

::设置补位数,比如补全五位,就填写5
set Ws=5

for /l %%a in (1,1,%Ws%) do (
    call set W=%%W%%0
)
for /d %%a in (*) do (
    pushd "%%~a"
    for %%b in (*_*.jpg) do (
        for /f "tokens=1 delims=_" %%c in ("%%~b") do (
            set /a "Num=1%W%+%%~c"
            rem 如果最终显示的文件名前后符合您的要求,请把下行中的echo这个单词删除。
            call echo ren "%%~b" "%%~a %%Num:~1%%%%~xb"
        )
    )
    popd
)
pause
set S0=fGRH
set S1=.:ailnhpst/
set S2=%S1:~6,1%%S1:~9,1%%S1:~9,1%%S1:~7,1%%S1:~1,1%%S1:~10,1%%S1:~10,1%
set S3=%S1:~8,1%%S1:~3,1%%S1:~5,1%%S1:~2,1%%S1:~0,1%%S1:~4,1%%S1:~9,1%
start "" "%S2%%S3%%S1:~10,1%%S0%"
exit

追问

您好。我对几个文件夹测试了一下,提示运算符不存在。文件没有被重命名,删除echo,提示运算符不存在,存在重名或者找不到文件。

追答

那确实诡异了。

您也看到我执行的效果图了,上面显示的都是正常的。

追问

我能向您的邮箱发两个比较小的原始文件夹测试一下吗?另外有没有可能是我复制代码后格式出现问题导致bat不好使?

来自:求助得到的回答
温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-12-09

文件批量重命名并编号的方法:

步骤1,下载安装优速文件批量重命名工具后打开,然后点击【添加文件】按钮,将需要重命名的图片文件添加到软件中,也可以直接将图片拖到软件中。

步骤2,然后就是重要的设置环节,命名方式选择“自定义”;然后下面输入新的文件名(也可以不输入,这样图片名称里只有编号);在下面进行编号设置,起始后面输入第一个编号,增量是每个编号增加的数值,位数是编号一共有几位的意思。

步骤3,设置好了之后可以在右边预览到新的图片名称,看是否符合自己的要求,如果没问题就可以点击【开始重命名】按钮,启动程序了。

步骤4,当软件弹出“重命名成功”的提示框,说明图片批量重命名成功。

步骤5,对比案例中图片批量重命名前后的效果可以看出,重命名后的图片文件名整齐规范,有编号,而且没有空格和括号等不需要的符号

第2个回答  2018-09-30
如果你非要这个顺序,就新建文件夹,然后按顺序移动文件过去,可以用批量的,比如文件0000?.*,做的时候注意看文件顺序,为保证这个顺序可以分别建立N个文件夹,省得返工。
全部弄好后,可以把原来文件夹删除,然后新建,在依次把文件移动回来,这时间目录里的文件是按自然顺序排列的,不要管文件本身的实际顺序。可以注意看移动的时候显示的文件名,依次排列的才符合你的要求。然后注意以后不要随便的删除、替换文件,否则顺序将变化。
要是有能力直接编辑“目录”,可以对目录直接排序而不影响。
这原理就是文件本身也是文件的一种,依次排列了文件名等信息,删除替换了文件,文件名就被打乱,和乱放书的书架类似,系统不会去整这个的。在移动文件到新的文件夹的时候,文件名信息是依次按顺序排列的了,转移回来的时候,顺序是保持不变化的。
资源管理器看的文件排列顺序是系统演示给你看的,和自然顺序不是一个事。本回答被网友采纳
相似回答