在 dos 中dir的所有参数及其使用方法
菜鸟命令入门
适宜人群:没有DOS基础的初学者 本期命令:dir
学习目标:学会使用dir命令列出目录和文件
很多菜鸟都会疑惑,在Windows下可以打开“我的电脑”显示目录和文件,但在“黑乎乎”的命令行窗口中,应该怎么查看(列出)目录和文件呢?这就需要使用DOS命令——dir。dir命令就像一个军队里的指挥官,他一声令下,所管辖的士兵就得按照他的要求排列、报数。通过dir命令后的参数,我们可以让这些士兵(文件)按各种方式排列(按文件大小排列、按字母顺序排列等)。
任务1:列出c:\windows下的目录及文件
dir c:\windows
命令讲解:dir命令最基本的使用方法即为“dir 要查看的目录或路径”,但这种方法有明显的缺点——当列表中的目录及文件过多时就无法完全显示,形如刷屏,我们来看看任务2是怎么解决这个问题的。
任务2:分页列出c:\windows下的目录及文件
dir c:\windows /p
命令讲解:在刚才的基本使用方法的基础上,我们在命令最后加上一个参数“/p”(即“page”页的缩写),列文件时就会使用分页显示方式,即列出一屏的目录及文件后,提示“按任意键继续...”,按任意键后则显示下一屏(见图1)。在“我的电脑”中可以通过勾选“文件夹选项”中的“显示隐藏文件”复选框来查看隐藏文件,在命令行方式下应该怎么做呢?
任务3:列出c:\windows下的隐藏文件
dir c:\windows /a:h
命令讲解:在命令的最后加上参数“/a:文件属性”,就能显示出指定属性的文件(隐藏文件的属性为“h”,目录为“d”,系统为“s”,只读为“r”)。但有的时候我们想看看目录下是否有一个特定名称的文件,却被文件列表中密密麻麻的文件名给挑花了眼。怎么才能让文件能够像英文字典似的以字母顺序排列,以便于我们查找文件呢?
任务4:以字母顺序列出c:\windows下的目录及文件
dir c:\windows /o:n
(见图2 按字母顺序排列的结果)
命令讲解:“/o:排序方式”参数指定了dir命令显示命令结果时的排序方式,排序方式设为“n”即代表按照文件名的字母顺序排列(从A~Z,以此类推)。
小提示
★我们也可以指定排序方式为按照文件扩展名的字母顺序(如:dir c:\windows /o:e)来找出特定扩展名的文件,同样的,还可以使用文件大小等方式进行排序。
★“/o”和“/a”可以省略其后的冒号“:”,但之间不能留有空格,如“/o:n”省略后的形式应为“/on”。中级老鸟做脚本
适宜人群:有一定DOS基础的用户 本期脚本:制作用户指定的任意格式文件列表清单
脚本说明:每个人都有很多个人编辑或收藏的文件,如文本文件、Office文档、图形图像、音频视频文件。久而久之,文件越积越多,查找起来既费时又费力。为便于文件检索,有时需要制作一份文件列表清单。为叙述方便,假设文件保存于目录D:\myfolder,列表清单文件保存为C:\list.txt。如果需要保存在其他目录中,可在代码中用该目录名替换D:\myfolder即可。
(插入图3 要在杂乱无章的文件夹中找东西非常困难)
*以下任务中的代码在Windows 9x/Me/2000/XP/2003下通用
任务1:列出D:\myfolder目录下扩展名为doc的文件清单
第一步:打开“记事本”,输入下列内容并保存为MakeList.bat批处理脚本文件放置在D:\myfolder目录:
@echo off
dir /o:n /b *.doc > c:\list.txt
脚本讲解:关闭命令回显(关于回显命令echo可参考上期的《DOS快餐店》),按名称(字母顺序)输出文件扩展名为doc的文件列表清单,保存到c:\list.txt。
小提示
★dir命令使用参数“/b”则表示只列出文件名。
★重定向符号“>”表示将其左侧的命令的输出结果(如上文即为dir命令列出的文件)写入到其右侧的文件中去。
第二步:打开目录D:\myfolder,双击MakeList.bat文件,运行该批处理脚本文件。
第三步:用“记事本”打开C:\list.txt文件,即可查看D:\myfolder目录下所有Word文档的列表清单。
(插入图4 生成的列表清单)
Just do it
替换批处理脚本文件的“doc”为其他文件扩展名,如“xls”则列出Excel文档。这段脚本让我们能够很方便地生成目录下的文件清单,可是每次要生成清单前都必须将该脚本文件复制到要生成清单的目录下,这未免有些麻烦。能不能让脚本文件能够像DOS命令那样支持参数呢?
任务2:支持参数的文件清单脚本
特别说明:该脚本的使用方法为“MakeList.bat 要列出的扩展名 进行操作的目录”(例如:MakeList.bat txt c:\windows)。
第一步:打开记事本,输入下列内容,然后保存为“MakeList.bat”批处理脚本文件,可保存于任意文件夹,建议保存于“我的文档”、“C:\”文件夹或其他盘根目录下:
@echo off
if {%2} == {} (set mypath=) else set mypath=%2\
dir /on /b %mypath%*.%1 > c:\list.txt
if errorlevel 1 echo 命令格式:makelist {文件扩展名} [驱动器:][路径] > c:\list.txt
脚本讲解:首先关闭命令回显。如果(即脚本中的“if”)检测第二个参数(%2表示第二个命令参数,即脚本进行操作的目录,为防止目录参数为空字串,须在其两边加上大括号“{}”)是否为空(即在使用命令时没有指定第二个参数,如:MakeList txt),为空则删除上一次设置的mypath环境变量(如果有的话),否则设置mypath环境变量(set命令用于设置环境变量)为参数末端加一反斜杆(即%2\,如%2这个参数的值为“C:\test”,则变为“C:\test\”)。最后按文件名称的字母顺序输出mypath中所含路径下指定扩展名(即由第一个参数%1指定)的文件列表清单文件。如果找不到文件或批处理命令参数错误,则输出提示信息(echo后面的即为错误提示)。
第二步:打开“命令提示符”(Windows 2000/XP/2003)或“MS-DOS方式”(Windows 9x/Me)窗口,将当前驱动器和目录改变到MakeList.bat批处理脚本文件所在目录。
第三步:假设现在要在目录D:\myfolder中列出文本文档(即*.txt)清单,则输入“makelist txt d:\myfolder”命令即可(不含引号)。如果当前工作驱动器和目录已是D:\myfolder,只要输入“makelist txt”命令,效果一样。
现在赶快打开C:\list.txt文件查看列表清单文件,是不是很棒?
小提示
★在命令行状态下执行批处理命令时,不必键入最后的“.bat”扩展名,因为BAT文件的优先级要高于EXE和COM文件(即如果同一目录下有a.bat、a.exe和a.com,在命令行下执行a,则系统会优先调用a.bat文件)。
★输入目录参数时不要加反斜杆,如“C:\test”而不能使用“C:\test\”。
★如目录名中含有空格或长命名,都必须在路径两边加上英文双引号,或者使用8.3规范(格式)。高级专家来把脉
适宜人群:已掌握各条DOS命令的高级用户 把脉对象:让dir列出带有指定关键字的文件
诊断结果:即使指定了字母排序显示方式,要在dir命令的一大堆结果中找到所需的文件也是非常困难的,如果能让dir命令支持关键字就能解决这个问题了。
治疗方案:利用find命令配合找出dir命令结果中含有指定关键字的文件名。可以使用管道“|”将dir的输出作为其他命令的输入参数。使用通配符(*或?)指定要显示的文件名或目录名(例:“dir *.txt”、“dir fan.*”)。下面以找出c:\windows下文件名中带有“win”关键字的exe文件为例解决这个问题。
dir c:\windows\*.exe | find "win"
(插入图5 指定关键字后运行的效果)
命令讲解:使用dir命令列出c:\windows下的所有exe文件,再将这个输出结果通过管道传递给find命令,由其对结果进行二次加工,筛选出含有“win”关键字的那些行(find命令及管道的使用,我们将在今后的DOS快餐店中为大家详细讲解,敬请关注)。
小提示
要了解dir命令的更多参数,可以在命令行窗口中输入“dir/?”(不含引号,替换其中的“dir”可以获得其他命令的用法)即可。