找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 32714|回复: 4

[文本处理] 批处理命令dir获取文件名后,怎么按递增进行排序?

[复制链接]
发表于 2014-5-21 15:15:30 | 显示全部楼层 |阅读模式
  1. dir /b >test.txt
复制代码
这样写的,保存目录的文件名后,是正常排序的,但今天发现就乱了!
硬盘目录下文件是这样排序的:
test1_1
test1_2
test1_3
test1_4
.......
test1_13
test1_14
但命令生成txt文件后,排序就是也是按升序排的,但成这种情况
test1_1
test1_13
test1_14
test1_2
test1_3

如何能让它变成按硬盘目录文件名数字递增排序,而不是先按1排再按2排
大神,帮助下新手吧
发表于 2014-5-21 19:41:29 | 显示全部楼层
  1. @echo off
  2. %1(for /f "delims=" %%a in ('"%~0" :^|sort') do echo,%%~nxa)>test.txt
  3. %1pause & exit/b
  4. for /f "delims=" %%a in ('dir /ad /b') do (
  5.     set "s=%%a"
  6.     setlocal enabledelayedexpansion
  7.     set "n=00000000000!s:*_=!"
  8.     echo,!n:~-11!/!s!
  9.     endlocal
  10. )
复制代码
发表于 2014-5-22 00:18:07 | 显示全部楼层
gnu 的 sort 最方便:
  1. dir /ad /b | sort -t_ -n -k2
复制代码
 楼主| 发表于 2014-5-22 09:41:09 | 显示全部楼层
本帖最后由 think 于 2014-5-22 09:42 编辑

回复 2# apang
回复 3# CrLf



没看明白什么意思...
其实就是让txt文件里一行一行按这样排序
1_1.1
1_1.2
.....
1_1.10
1_1.11
1_1.12
1_2.1
1_2.3
1_3.1

而不是让它,按这样排序
1_1.1
1_1.10
1_1.11
1_1.12
1_1.2
1_1.3
.....
1_2.1
1_2.3
1_3.1
发表于 2014-5-22 16:16:57 | 显示全部楼层
回复 4# think


    顶楼给的数据为啥不包含小数点?
  1. @set @n=0;/* & echo off
  2. dir /ad /b | cscript -nologo -e:jscript "%~0"
  3. pause & exit/b & rem */
  4. ar = [];
  5. while (!WScript.StdIn.AtEndOfStream) {
  6.     name = WScript.StdIn.ReadLine();
  7.     s = name.replace(/\d+/g,
  8.         function(s0){return ('0000000000'+s0).substr(s0.length)}
  9.     )
  10.     ar.push(s + '\\' + name);
  11. }
  12. ar.sort();
  13. WScript.Echo(ar.join('\r\n').replace(/.*\\/g, ''))
复制代码
D:\test>dir /ad /b
test10_1.1
test1_1.1
test1_1.10
test1_1.2
test1_10.1
test1_10.12
test1_10.2
test1_2.3

D:\test>test.bat
test1_1.1
test1_1.2
test1_1.10
test1_2.3
test1_10.1
test1_10.2
test1_10.12
test10_1.1
请按任意键继续. . .
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 12:07 , Processed in 0.018408 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表