标题: [文件操作] [已解决]批处理读文件的顺序问题 [打印本页]
作者: swanseabrian 时间: 2021-12-3 21:21 标题: [已解决]批处理读文件的顺序问题
我想按顺序读取文件 ,可是我读出来的是下面这样的
"_P_1.JPG"
"_P_10.JPG"
"_P_11.JPG"
"_P_12.JPG"
"_P_13.JPG"
"_P_14.JPG"
"_P_15.JPG"
"_P_16.JPG"
"_P_17.JPG"
"_P_18.JPG"
"_P_19.JPG"
"_P_2.JPG"
"_P_20.JPG"
"_P_21.JPG"
"_P_22.JPG"
"_P_23.JPG"
"_P_24.JPG"
"_P_25.JPG"
"_P_26.JPG"
"_P_27.JPG"
"_P_28.JPG"
"_P_29.JPG"
"_P_3.JPG"
"_P_30.JPG"
"_P_31.JPG"
有没有办法让他按正常的顺序读呢?
作者: hlzj88 时间: 2021-12-3 21:36
这个是系统问题,我们在窗口里看文件时,他是按正常理解的顺序来显示的。但是在dos里来读取显示顺序就会如上例。
如果需要对文件依次处理,可以利用for /l ,只是看看就不要计较。
for /l %%i in (1,1,50) do if exist "_P_%%i.jpg" echo _P_%%i.jpg
我的代码成功率差,没有经过测试不算成功。上面只是基本思路表达。
作者: swanseabrian 时间: 2021-12-3 22:04
回复 2# hlzj88
这样可以,那如果 是按文本内容改名呢,也
就是 1号对应 文本中的第一个名字,
2号对应该文本中的第二个名字
我的代码是下面的 ,我感觉 错了
帮我看一下- @echo off&setlocal enabledelayedexpansion
-
- for /f "delims=" %%a in ("经理.txt") do (
- for /l %%i in (1,1,56) do (
- if exist "_P_%%i.jpg" (
-
- ren "_P_%%i.jpg" "%%a.jpg" )
- )
复制代码
作者: qixiaobin0715 时间: 2021-12-3 22:13
回复 1# swanseabrian
实际上你读出来才是正常顺序。
电脑不是人脑,它是读取的规则是:先按第一个字符排序,第一个字符相同再比较第二个字符进行排序,依次类推。所以会得到你看到的情况。
具体字符顺序请参照帖子http://www.bathome.net/thread-6851-1-1.html中所述。
如果像你顶楼那种情况数字是连续的话,代码可以牵强的这么写:- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir /b /a-d *.JPG') do (
- set /a n+=1
- echo,_P_!n!.JPG
- )
- pause
复制代码
作者: swanseabrian 时间: 2021-12-3 22:25
回复 4# qixiaobin0715
按文本内容改名怎么弄
作者: qixiaobin0715 时间: 2021-12-3 22:42
本帖最后由 qixiaobin0715 于 2021-12-3 22:47 编辑
如果文件名中的数字是连续且文件与文件中的文本一一对应:- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%a in (经理.txt) do (
- set /a n+=1
- ren "_P_!n!.jpg" "%%a.jpg"
- )
- pause
复制代码
代码未经测试
作者: swanseabrian 时间: 2021-12-3 23:04
回复 6# qixiaobin0715
我想到这了,都没写,还是你厉害
作者: qixiaobin0715 时间: 2021-12-4 13:35
回复 7# swanseabrian
如果数字不连续,应当也能实现。思路:
在循环中使用call跳出循环外,然后使用goto语句找出下一个数字。
作者: swanseabrian 时间: 2021-12-4 16:09
回复 8# qixiaobin0715
应该不会有这么变态的需求了吧
作者: qixiaobin0715 时间: 2021-12-7 08:37
本帖最后由 qixiaobin0715 于 2021-12-7 10:17 编辑
有的,我见过更麻烦的,文件名要求按月份日期排列:
2-5.jpg
2-6.jpg
2-15.jpg
10-7.jpg
10-8.jpg
10-25.jpg
dir顺序应当是:
10-25.txt
10-7.txt
10-8.txt
2-15.txt
2-5.txt
2-6.txt
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |