标题: [其他] 批处理dir命令遍历文件怎样按顺序显示? [打印本页]
作者: MantisLin 时间: 2011-10-9 16:20 标题: 批处理dir命令遍历文件怎样按顺序显示?
假设一个文件夹中有 1.txt - 10.txt 这样十个文本文档
那么在CMD里cd进入该文件夹后,执行复制代码
的话,可以看到结果- 1.txt
- 10.txt
- 2.txt
- 3.txt
- 4.txt
- 5.txt
- 6.txt
- 7.txt
- 8.txt
- 9.txt
复制代码
可以看到 10.txt 排在第二位,这不符合人类的习惯,要怎么样才能让遍历出来的 10.txt 排在末尾呢?
作者: cjiabing 时间: 2011-10-9 19:03
查看DIR帮助信息,有按顺序排列的
作者: MantisLin 时间: 2011-10-9 19:10
回复 2# cjiabing
DIR的帮助信息早看了,也试过了,没用。
所以才来这里发问的
作者: guaiwu 时间: 2011-10-9 19:48
复制代码
作者: HAT 时间: 2011-10-9 20:12
回复 4# guaiwu
你发帖之前有做过测试吗?
c:\Test>dir /b /o:n *.txt
1.txt
10.txt
2.txt
|
作者: wc726842270 时间: 2011-10-9 20:37
LZ似乎用自已的思维来认知世界啊,个人的想法不要和集体混作一谈。如果真的有兴趣,就用你自已的能力让它改变。(呵呵,话可能过了点)
作者: MantisLin 时间: 2011-10-9 21:09
本帖最后由 MantisLin 于 2011-10-9 21:11 编辑
回复 6# wc726842270
好吧,就算你说的对吧,但批处理之家不是讨论哲学用的,还是来共同讨论解决办法吧。
作者: MantisLin 时间: 2011-10-9 21:10
回复 4# guaiwu
这位朋友,你的代码不是跟我的提问时用的代码一样的嘛……
作者: applba 时间: 2011-10-9 22:09
本帖最后由 applba 于 2011-10-9 22:21 编辑
就是个排序的问题,要花点心思,论坛还是有很多数字排序的文章……
作者: cjiabing 时间: 2011-10-9 23:33
曾经遇到类似问题,忘记当时怎么搞的了。- C:\>sort F:\雅尼\1.txt /+5
- 2401
- 101
- 26
- 21
- 13
- 10
- 5
- 2
- 1
复制代码
作者: cjiabing 时间: 2011-10-9 23:34
曾经遇到类似问题,忘记当时怎么搞的了。- C:\>sort F:\雅尼\1.txt /+5
- 2401
- 101
- 26
- 21
- 13
- 10
- 5
- 2
- 1
复制代码
作者: CrLf 时间: 2011-10-9 23:50
补位再排序(很适合批处理),或者借鉴编程语言的排序思路
作者: MantisLin 时间: 2011-10-10 14:05
sort 命令还真没用过,不知道要怎么和 dir 结合起来,用通道?复制代码
刚刚试过,这样好像不行,怎么用?
作者: QIAOXINGXING 时间: 2011-10-10 14:36
把文件名 改成 01、02、03 ....................
作者: MantisLin 时间: 2011-10-10 17:21
回复 14# QIAOXINGXING
不要改文件名
作者: guaiwu 时间: 2011-10-10 19:32
回复 5# HAT
或许这个对你有帮助
http://www.bathome.net/thread-13520-1-2.html
作者: garyng 时间: 2011-10-11 14:37
试试看吧:
有临时文件(%temp%\temp.txt)- @echo off
- setlocal enabledelayedexpansion
- del /q %temp%\temp.txt
- for /f %%i in ('dir/b/on') do (
- set /p=%%i <nul>>%temp%\temp.txt
- )
- (set /p str=)<%temp%\temp.txt
- for %%b in (%str%) do (
- set str=0000000000%%b
- set .!str:~-10! !random!=%%b
- )
- for /f "tokens=2 delims==" %%b in ('set .') do echo %%b
- pause
复制代码
作者: 545810831 时间: 2011-10-14 09:55
- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b /on *.txt') do (
- set str=%%~ni
- if "!str:~1,1!"=="" echo !str!%%~xi
- )
- for /f "delims=" %%i in ('dir /b /on *.txt') do (
- set str=%%~ni
- if not "!str:~1,1!"=="" echo !str!%%~xi
- )
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |