[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 【已结】关于DIR的排序问题(非常规排序)

当排序特俗情况下的文件名时
按照按名称(字母顺序)排序与资源管理器排序不同
比如有如下文件
www1.txt
www2.txt
www3.txt
www4.txt
www10.txt
www18.txt
www101.txt

资源管理器里面就是如上排序
dir *.TXT /ON 出来后时
www1.txt
www10.txt
www101.txt
www18.txt
www2.txt
www3.txt
www4.txt
这个排序不是我想要的
如何能做到跟资源管理器的一样呢?

还有别的参数控制么?
如果不能通过参数做到,还有别的方法么?
如果需要排序的话
麻烦各位赐教

[ 本帖最后由 seasands 于 2009-1-25 14:58 编辑 ]

第一帖就来提问,多多谅解
希望得到帮助

TOP

这么快就有朋友答复
感谢,我试试

TOP

Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk10.ts
Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk11.ts
Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk1.ts
Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk2.ts
Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk3.ts
Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk4.ts
Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk5.ts
Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk6.ts
Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk7.ts
Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk8.ts
Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk9.ts
Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk111.ts

列举个实例出来,上面是排序后的结果

[ 本帖最后由 seasands 于 2009-1-26 13:06 编辑 ]

TOP

Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk1.ts
Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk2.ts
Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk3.ts
Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk4.ts
Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk5.ts
Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk6.ts
Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk7.ts
Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk8.ts
Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk9.ts
Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk10.ts
Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk11.ts
Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk111.ts
希望得到的排序是这样

TOP

好像 还是不行
得到结果
Vantage.Point.Blu-ray.REMUX.TrueHD.SILUHD.disk1.ts
Vantage.Point.Blu-ray.REMUX.TrueHD.SILUHD.disk10.ts
Vantage.Point.Blu-ray.REMUX.TrueHD.SILUHD.disk11.ts
Vantage.Point.Blu-ray.REMUX.TrueHD.SILUHD.disk110.ts
Vantage.Point.Blu-ray.REMUX.TrueHD.SILUHD.disk111.ts
Vantage.Point.Blu-ray.REMUX.TrueHD.SILUHD.disk2.ts
Vantage.Point.Blu-ray.REMUX.TrueHD.SILUHD.disk3.ts
Vantage.Point.Blu-ray.REMUX.TrueHD.SILUHD.disk4.ts
Vantage.Point.Blu-ray.REMUX.TrueHD.SILUHD.disk5.ts
Vantage.Point.Blu-ray.REMUX.TrueHD.SILUHD.disk6.ts
Vantage.Point.Blu-ray.REMUX.TrueHD.SILUHD.disk7.ts
Vantage.Point.Blu-ray.REMUX.TrueHD.SILUHD.disk8.ts
Vantage.Point.Blu-ray.REMUX.TrueHD.SILUHD.disk9.ts

TOP

我的想法能够按照文件名长度排序
先输出短文件名,后输出长文件名的也行
可惜情况如下:
  1. DIR /B/ON *.DISK?.TS
  2. Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk1.ts
  3. Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk2.ts
  4. Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk3.ts
  5. Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk4.ts
  6. Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk5.ts
  7. Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk6.ts
  8. Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk7.ts
  9. Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk8.ts
  10. Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk9.ts
复制代码
DIR /B/ON *.DISK??.TS则不能只显示
Vantage.Point.Blu-ray.REMUX.TrueHD.SILUHD.disk10.ts
Vantage.Point.Blu-ray.REMUX.TrueHD.SILUHD.disk11.ts
得到结果
  1. DIR /B/ON *.DISK??.TS
  2. Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk1.ts
  3. Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk10.ts
  4. Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk11.ts
  5. Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk2.ts
  6. Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk3.ts
  7. Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk4.ts
  8. Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk5.ts
  9. Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk6.ts
  10. Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk7.ts
  11. Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk8.ts
  12. Vantage.Point.Blu-ray.REMUX.1080P.H264.TrueHD.SILUHD.disk9.ts
复制代码
而是把所有的都显示出来了
晕,本想这样,我累加一下也好,但就是不行

[ 本帖最后由 seasands 于 2009-1-26 10:39 编辑 ]

TOP

自己解决了
实在不行,只能自己按照文件名长度排序了
不过效率就一般般了

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%a in ("*.ts") do (
  4.   for /f "skip=1 delims=:" %%b in ('^(echo "%%~nxa"^&echo.^)^|findstr /o ".*"') do
  5. set /a length=%%b-5
  6.   if !length! lss 10 (
  7.     set .00!length!%%~nxa=%%~nxa
  8.   ) else if !length! lss 100 (
  9.     set .0!length!%%~nxa=%%~nxa
  10.   ) else (
  11.     set .!length!%%~nxa=%%~nxa
  12.   )
  13. )
  14. for /f "tokens=2 delims==" %%a in ('set .') do echo %%a
复制代码

TOP

恩,13楼的方法是不错

TOP

怎么加分?找了半天
似乎没权限

TOP

防止刷分吧,呵呵
没事
回头我会给帮助的朋友加分
代码已经按照我自己的方法完成了
版主说的方法我下次在自己做下
应该效率高很多

TOP

好像还是不能评分
再等等哦

TOP

返回列表