[文件操作][已解决]批处理读文件的顺序问题

[文件操作][已解决]批处理读文件的顺序问题

swanseabrian

发短消息

加为好友

swanseabrian

当前离线

UID61034 帖子237 精华0 积分312 PB312 技术0 捐助0 阅读权限20 在线时间202 小时 注册时间2013-5-31 最后登录2022-10-27

五级士官

帖子237 积分312 技术0 捐助0 注册时间2013-5-31

1楼

跳转到 »

倒序看帖

打印

字体大小: tT

发表于 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

发短消息

加为好友

hlzj88

当前离线

UID6278 帖子840 精华0 积分1653 PB1465 技术56 捐助20 阅读权限60 来自青海西宁 在线时间319 小时 注册时间2008-11-3 最后登录2025-8-25

少校

帖子840 积分1653 技术56 捐助20 注册时间2008-11-3

2楼

发表于 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

我的代码成功率差,没有经过测试不算成功。上面只是基本思路表达。

1

评分人数

swanseabrian:

感谢分享,你这个也厉害技术 + 1

目的,学习批处理

TOP

swanseabrian

发短消息

加为好友

swanseabrian

当前离线

UID61034 帖子237 精华0 积分312 PB312 技术0 捐助0 阅读权限20 在线时间202 小时 注册时间2013-5-31 最后登录2022-10-27

五级士官

帖子237 积分312 技术0 捐助0 注册时间2013-5-31

3楼

发表于 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" )

)复制代码

TOP

qixiaobin0715

发短消息

加为好友

qixiaobin0715

当前离线

UID74702 帖子2877 精华0 积分4235 PB2909 技术442 捐助0 阅读权限90 在线时间5030 小时 注册时间2016-2-20 最后登录2024-12-31

大校

帖子2877 积分4235 技术442 捐助0 注册时间2016-2-20

4楼

发表于 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复制代码

TOP

swanseabrian

发短消息

加为好友

swanseabrian

当前离线

UID61034 帖子237 精华0 积分312 PB312 技术0 捐助0 阅读权限20 在线时间202 小时 注册时间2013-5-31 最后登录2022-10-27

五级士官

帖子237 积分312 技术0 捐助0 注册时间2013-5-31

5楼

发表于 2021-12-3 22:25

| 只看该作者

回复 4# qixiaobin0715

按文本内容改名怎么弄

TOP

qixiaobin0715

发短消息

加为好友

qixiaobin0715

当前离线

UID74702 帖子2877 精华0 积分4235 PB2909 技术442 捐助0 阅读权限90 在线时间5030 小时 注册时间2016-2-20 最后登录2024-12-31

大校

帖子2877 积分4235 技术442 捐助0 注册时间2016-2-20

6楼

发表于 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复制代码代码未经测试

1

评分人数

swanseabrian:

感谢分享技术 + 1

TOP

swanseabrian

发短消息

加为好友

swanseabrian

当前离线

UID61034 帖子237 精华0 积分312 PB312 技术0 捐助0 阅读权限20 在线时间202 小时 注册时间2013-5-31 最后登录2022-10-27

五级士官

帖子237 积分312 技术0 捐助0 注册时间2013-5-31

7楼

发表于 2021-12-3 23:04

| 只看该作者

回复 6# qixiaobin0715

我想到这了,都没写,还是你厉害

TOP

qixiaobin0715

发短消息

加为好友

qixiaobin0715

当前离线

UID74702 帖子2877 精华0 积分4235 PB2909 技术442 捐助0 阅读权限90 在线时间5030 小时 注册时间2016-2-20 最后登录2024-12-31

大校

帖子2877 积分4235 技术442 捐助0 注册时间2016-2-20

8楼

发表于 2021-12-4 13:35

| 只看该作者

回复 7# swanseabrian

如果数字不连续,应当也能实现。思路:

在循环中使用call跳出循环外,然后使用goto语句找出下一个数字。

TOP

swanseabrian

发短消息

加为好友

swanseabrian

当前离线

UID61034 帖子237 精华0 积分312 PB312 技术0 捐助0 阅读权限20 在线时间202 小时 注册时间2013-5-31 最后登录2022-10-27

五级士官

帖子237 积分312 技术0 捐助0 注册时间2013-5-31

9楼

发表于 2021-12-4 16:09

| 只看该作者

回复 8# qixiaobin0715

应该不会有这么变态的需求了吧

TOP

qixiaobin0715

发短消息

加为好友

qixiaobin0715

当前离线

UID74702 帖子2877 精华0 积分4235 PB2909 技术442 捐助0 阅读权限90 在线时间5030 小时 注册时间2016-2-20 最后登录2024-12-31

大校

帖子2877 积分4235 技术442 捐助0 注册时间2016-2-20

10楼

发表于 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

TOP

相关文章

🪶
痘痘挤出来的白色东西是什么
365bet注册送钱

痘痘挤出来的白色东西是什么

09-06 👀 8739
🪶
三五[555]香烟价格表 三五[555]多少钱一包
365bet注册送钱

三五[555]香烟价格表 三五[555]多少钱一包

08-28 👀 3926