Board logo

标题: [求助] 有懂DOS中DIR命令的朋友吗?请求帮忙,谢谢! [打印本页]

作者: setrery    时间: 2010-10-14 12:16     标题: 有懂DOS中DIR命令的朋友吗?请求帮忙,谢谢!

想要达到的目的是:显示D盘中所有文件夹中的AAAA.BB的文件,并且按照文件的创建时间排列后输出到D盘保存为ABC.txt的文档。

根据网上查的资料后,总结归纳出如下命令:

先到D盘,然后输入:dir AAAA.BB /s /OD >>D:\ABC.txt

达到的效果是输出了ABC.txt,也把结果都搜索了出来,但是没有按照创建时间排序,所以请求各位朋友帮忙,看看问题出在哪里,谢谢!
作者: sanmoni    时间: 2010-10-14 12:30

dir AAAA.BB /s /OD /TC>>D:\ABC.txt
这样是安创建时间排序。

以上排序只能是同目录下排序,不可能完全排序

完全排序就乱了,你最后都不知道哪个文件在哪个目录下了。
作者: setrery    时间: 2010-10-14 12:43

引用:
原帖由 sanmoni 于 2010-10-14 12:30 发表
dir AAAA.BB /s /OD /TC>>D:\ABC.txt
这样是安创建时间排序。

以上排序只能是同目录下排序,不可能完全排序

完全排序就乱了,你最后都不知道哪个文件在哪个目录下了。
谢谢你的指点,看来是个不可能完成的任务
作者: kk1_1001    时间: 2010-10-14 12:51

DIR [drive:][path][filename] [/A[[:]attributes]] [/C] [/D] [/L] [/N]   [/O[[:]sortorder]] [/P] [/Q] [/S] [/T[[:]timefield]] [/W] [/X] [/4]   [drive:][path][filename]   指定要列出的驱动器、目录和/或文件。   /A 显示具有指定属性的文件。   attributes D 目录 R 只读文件   H 隐藏文件 A 准备存档的文件   S 系统文件 - 表示“否”的前缀   /B 使用空格式(没有标题信息或摘要)。   /C 在文件大小中显示千位数分隔符。这是默认值。用 /-C 来   停用分隔符显示。   /D 跟宽式相同,但文件是按栏分类列出的。   /L 用小写。   /N 新的长列表格式,其中文件名在最右边。   /O 用分类顺序列出文件。   sortorder N 按名称(字母顺序) S 按大小(从小到大)   E 按扩展名(字母顺序) D 按日期/时间(从先到后)   G 组目录优先 - 颠倒顺序的前缀   /P 在每个信息屏幕后暂停。   /Q 显示文件所有者。   /S 显示指定目录和所有子目录中的文件。   /T 控制显示或用来分类的时间字符域。   timefield C 创建时间   A 上次访问时间   W 上次写入的时间   /W 用宽列表格式。   /X 显示为非 8dot3 文件名产生的短名称。格式是 /N 的格式,   短名称插在长名称前面。如果没有短名称,在其位置则   显示空白。   /4 用四位数字显示年   可以在 DIRCMD 环境变量中预先设定开关。通过添加前缀 - (破折号)   来替代预先设定的开关。例如,/-W。   /?   在命令提示符下显示帮助。
作者: 雨泥    时间: 2010-10-14 13:02

在这个命令里面好象没有特定排序的吧。建议楼主采用其它的方式。
作者: shxiashxia    时间: 2010-10-14 13:35

二楼的是正解
加一个/od的参数 就就是了
因为:  /O          用分类顺序列出文件。
  sortorder    N  按名称(字母顺序)     S  按大小(从小到大)
               E  按扩展名(字母顺序)   D  按日期/时间(从先到后)
               G  组目录优先           -  颠倒顺序的前缀
“>”是指向并生成 一个文件,很有用 的

[ 本帖最后由 shxiashxia 于 2010-10-14 13:37 编辑 ]
作者: lordgoddog    时间: 2010-10-14 13:40

楼主干吗不用windows中的搜索,无非就是找个文件,现在dos本质上都是虚拟的。
作者: setrery    时间: 2010-10-14 13:59

引用:
原帖由 lordgoddog 于 2010-10-14 13:40 发表
楼主干吗不用windows中的搜索,无非就是找个文件,现在dos本质上都是虚拟的。
除了找出来,还要按时间排序后保存成文档,所以我想解决这个问题。
作者: v_nannan    时间: 2010-10-14 17:15

dir AAAA.BB /s | sort >>D:\ABC.txt 我想应该可以满足基本要求。

不过这是通过管道的方式使用了SORT命令。请确保你的DOS系统中有这个。如果是在WINXP中的DOS窗口,没有问题。
我试着运行了一下。如二楼所讲,可以满足文件名的排序,但位置信息则不能表示了。因为SORT命令以行为单位处理了dir命令输出的字符串。使字符串按行以A-Z,0-9的方式排序。但是在以前的纯DOS中好像不行。因为DOS6.22以下的版本显示的方式是以文件名开头,而以上版本的是以文件日期为开头。

想复杂点的话。用WINDOWS下的VBSCRIPT方式处理更好。

[ 本帖最后由 v_nannan 于 2010-10-14 17:28 编辑 ]
作者: Y_YYY    时间: 2010-10-14 17:18

不同系统中的DIR命令应该是功能不完全一样的。应该看lz说的是哪个版本的系统。
作者: 313833096    时间: 2010-10-14 17:27

C:\Documents and Settings\fxf>dir /?
显示目录中的文件和子目录列表。
DIR [drive:][path][filename] [/A[[:]attributes]] [/B] [/C] [/D] [/L] [/N]
[/O[[:]sortorder]] [/P] [/Q] [/S] [/T[[:]timefield]] [/W] [/X] [/4]
[drive:][path][filename] 指定要列出的驱动器、目录和/或文件。
/A          显示具有指定属性的文件。
attributes   D  目录                R  只读文件
H  隐藏文件            A  准备存档的文件
S  系统文件            -  表示“否”的前缀
/B          使用空格式(没有标题信息或摘要)。
/C          在文件大小中显示千位数分隔符。这是默认值。用 /-C 来停用分隔符显示。
/D          跟宽式相同,但文件是按栏分类列出的。
/L          用小写。
/N          新的长列表格式,其中文件名在最右边。
/O          用分类顺序列出文件。
sortorder    N  按名称(字母顺序)     S  按大小(从小到大)
E  按扩展名(字母顺序)   D  按日期/时间(从先到后)
G  组目录优先           -  颠倒顺序的前缀 /P          在每个信息屏幕后暂停。
/Q          显示文件所有者。
/S          显示指定目录和所有子目录中的文件。
/T          控制显示或用来分类的时间字符域。 timefield   C  创建时间
A  上次访问时间
W  上次写入的时间
/W          用宽列表格式。
  /X          显示为非 8dot3 文件名产生的短名称。格式是 /N 的格式,
              短名称插在长名称前面。如果没有短名称,在其位置则
              显示空白。
  /4          用四位数字显示年

可以在 DIRCMD 环境变量中预先设定开关。通过添加前缀 - (破折号)
来替代预先设定的开关。例如,/-W。

重点:
  /O          用分类顺序列出文件。
  sortorder    N  按名称(字母顺序)     S  按大小(从小到大)
               E  按扩展名(字母顺序)   D  按日期/时间(从先到后)
               G  组目录优先           -  颠倒顺序的前缀
这些是命令符..具体的我想就很难解释的了!
作者: xj_sonia    时间: 2010-10-14 18:20

好象没有特定排序的吧。建议楼主采用别的方法
作者: cos1999    时间: 2010-10-14 18:24

这个有点高深了,兄弟实在是帮不上忙,回复下表示支持
作者: zghnscy    时间: 2010-10-14 18:48

不给力啊,别DIR了,楼主去下载everything试一下吧
作者: marstone    时间: 2010-10-14 19:33

引用:
原帖由 sanmoni 于 2010-10-14 12:30 发表
dir AAAA.BB /s /OD /TC>>D:\ABC.txt
这样是安创建时间排序。

以上排序只能是同目录下排序,不可能完全排序

完全排序就乱了,你最后都不知道哪个文件在哪个目录下了。
二楼正解,一起来学习一下,谢谢分享
作者: asmer    时间: 2010-10-14 20:36

同意二楼说的,这个好久不用了呢
作者: mdman    时间: 2010-10-14 21:20

引用:
原帖由 setrery 于 2010-10-14 12:16 发表
想要达到的目的是:显示D盘中所有文件夹中的AAAA.BB的文件,并且按照文件的创建时间排列后输出到D盘保存为ABC.txt的文档。

根据网上查的资料后,总结归纳出如下命令:

先到D盘,然后输入:dir AAAA.BB /s /OD  ...
在命令行后加一个‘/T’就好了 你试试
作者: setrery    时间: 2010-10-15 12:16

很可惜,楼上各位朋友的方法都尝试了一下,还是没有成功,谢谢各位,看来要换个思路考虑解决办法了。
作者: v_nannan    时间: 2010-10-15 12:48

用单个命令只能对输出的字符串进行排序处理。因为dir程序也是靠遍历文件分配表的文件树结构来来输出结果。

如果用DOS的批处理文件BAT的FOR 循环方法应该可以完成。关键是看你想要一个什么效果。如果说不仅要按时间排序还要像dir /s那样做文件位置的标准输出,好像单靠一个命令是完成不了的。如果只需要对文件名排的话。用SORT做管道对文件名的行进行排序就可以了。其他的信息就可以用格式输出的方式直接舍去。
作者: komsss    时间: 2010-10-15 12:50

不清楚,学习一下
作者: hewei269    时间: 2010-10-15 16:21     标题: 回复 1楼 的帖子

如果不介意在WINDOWS下的话,可以把命令生成的TXT文档用EXCEL打开,它会询问是否用单元格把字段分开,然后问你是否对应整排,最后点时间那栏排序就可以得到你想要的结果了。
作者: ouou_741010    时间: 2010-10-22 16:55

这是老命令了,  你可以在DOS 下  打 dir/ H  应该  能出来帮助 ,  或者是dir /?
作者: kekeding    时间: 2010-10-23 01:29

我记得要实现你的那个意思 是用type命令吧  显示具体文本内容的
作者: fengwei00    时间: 2010-10-23 02:59

都是高手,看来我还得努力学习呢,说实话,我连楼主的问题都没看懂




欢迎光临 SiS001! Board - [第一会所 关闭注册] (http://23.225.172.71/bbs/) Powered by Discuz! 7.2