批处理(bat)命令之dir命令

我为了查找F:\update\路径下有多少文件夹以及文件夹的名字

set BaseUrl_Update=F:\update\
for /f %%s in ('dir %BaseUrl_Update% /b/a:d') do ()

把查找过程中的知识点做个记录,如下

/s 查找当前目录以及所有子目录下的文件
/b 舍弃标题与摘要内容 
/d  跟宽式相同,但文件是按栏分类列出的。
/n  长列表格式 即 竖立格式 与光杆dir 下无异
/b /a:d 指定显示所有具有该属性的文件
/b /d&/w 交互使用时,/d&/w 开关 无效。
/q  显示文件所有权信息、或者说文件所有者信息
/w 宽行格式显示 X轴序列  文件名过长 无效
/d 宽行格式显示 Y轴序列   文件名过长 无效 
/d & /w  会在在文件夹的前后添加"[]"X
/l 所显示文件名,全部为小写英文字母。
/c&/-c  禁用文件大小显示千位数分隔符。默认显示分隔符“,”  /-c  不显示分隔符。
/a:d 只显示文件夹(包括隐藏文件夹)  
/a:h 只显示隐藏文件 (包括具有当前属性的其他三种文件、夹)
/a:r 仅显示只读文件(包括具有当前属性的其他三种文件、夹) 
/a:s 仅显示系统文件(包括具有当前属性的其他三种文件、夹)
/a:a 只显示存档文件- - X----- 只显示文件 (包括具有存档属性的其他三种属性文件)  这个命令对应 /a:d  只显示文件夹。 

windows中文件共有四种属性、
分别为 存档、只读、系统、隐藏
/O   用分类顺序列出文件。
  排列顺序      N  按名称(字母顺序)     
                      S  按大小(从小到大)
                      E  按扩展名(字母顺序)   
                      D  按日期/时间(从先到后)
                      G  组目录优先     
                      -  反转顺序的前缀

/o 开关解读

/o:n_/o:name 按名称(字母顺序)列出文件  dir 默认显示如此 可以舍弃
/o:s_/o:size 按大小 (从小到大)列出文件 
/o:e_/o:extension 按扩展名 (字母顺序)列出文件
/o:d_/o:date 日期/时间 (从先到后) 列出文件
/o:g_/o:group 组/组目录优先 列出文件

顺序排列为依次命令
因此 可以这样讲他们的优先顺序为 

 g>d>e>s>n
 组>日期>扩展名>大小>名称
例如
dir /b /ad /ods  显示为 /od 顺序
dir /b /ad /osd  显示同样为 /od 顺序
dir /b /oeg  则显示为g 顺序

这个可以进行多次测试

我们大概的来对这个开关进行一个梳理

/on /os /oe /od /g 

dir 默认的显示格式为 字母顺序  /on可以抛弃 但是尽量书写
1、字母顺序 2、文件大小~从小到大 3、扩展名字母顺序 4、日期顺序 5、组目录优先
-1、反转字母顺序2、从大到小3、扩展名字母顺序反转4、日期由最近的时间往前推5、组目录靠后

但是 同样也说明了一条 
就是 /o 作为一个显示顺序的开关 我们只要为它指定一个参数便可以

- 反转顺序 =。= 就是从小到大-从大到小 字母顺序-侧从最后一个字母向前列出 日期/时间-由最近的时间向以前推 组/组目录-排在最后= 。= 完

/t 命令 解析

 /T          控制显示或用来分类的时间字符域。
  时间段      C  创建时间
              A  上次访问时间
              W  上次写入的时间
dir /t:c 文件创建日期?  开始创建的时间

dir /t:a 上次访问时间?  最近打开的时间

dir /t:w 上次写入时间?  最近内容更改的时间 
实验得出结论,dir /t:c or /t:a 都显示为开始创建的时间 
也就是说 /t:a 的命令开关无效 而不加命令的 dir 显示这些开始创建的时间 
所以 基本可以判定 /t:c /t:a 命令无用。
dir /t:w 确实可以查看到 最近内容更改的时间。有点用吧= 。=
:: 针对个体文件 dir filename dir 后续文件名可直接查看最近一次更改日期
so: dir /t:w 适用于群体文件~

要求: dir 命令 

1、只显示文件不显示文件夹

dir /a:a  or  /aa  

dir /a:-d  or /a-b

2、将各个文件、夹  小:上_大:下 的方式显示出来 不显示标题信息 以及摘要

dir /b /o:s  

3、要求仅显示txt文件,并按文件大小(从小到大)的顺序排列

dir /o:s *.txt 

4、显示.txt文件最近更改的日期 时间由近及远 列表方式显示

dir /t:w /o:-d *.txt

可以查看到~ 养成习惯,以后打开文件后,稍作改动即可 可添加.代表最近一次改动 或者“ ”打出空格,提示保存时,直接保存。

5、下面问题来了 只显示文件(不显示系统、只读、隐藏)  不显示文件夹 该怎么写呢?

dir /a:a-h-r-s 

同理 /a /o /t 开关 都可以如此使用

6、显示列表文件名在前 状态时间信息在后

/x /n 有异曲同工之理

dir /x /-x 无差别
dir /-n  显示列表文件名在前 状态时间信息在后 但文件名显示为"8 3"格式  长文件名显示不完全
dir /-n /x 忽略/n 开关 与/x 无差别
dir /-n /o:-d >2.txt  
dir /-n /a:a-h-s-r /o:-d /t:w /l >3.txt

列表文件名在前 状态时间信息在后
文件名为短文件名映射
不显示系统、隐藏、只读文件
不显示文件夹
时间按由近及远的顺序由上而下排列
显示内容最近更改的时间 

dir 查找文件名 并显示
  文件名 包含文件名 文件名后缀(又叫扩展名)


@echo off
dir /s /b /l /aa-s-h-r /tw /o-d *.txt >2.txt
findstr /f:2.txt /im "dir" >3.txt

dir /s /b /l /aa-s-h-r /tw /o-d *txt *cmd >4.txt
dir /s /b /l /aa /tw /o-d *mp3 >5.txt

dir /s /b /l /aa /o-d e:\music集中文件\*lrc *txt *cmd >5.txt


dir /s /b /l /aa *mp3 e:\music集中文件\ >6.txt  当前命令会忽略*mp3
显示e:\music集中文件\ 下所有文件

所以谨记 书写命令的格式 命令 命令开关 路径 >导出文件

dir /w /p & dir /p /d≤5  用于多行分屏显示
完。

有空我会一一验证的

你可能感兴趣的:(批处理(bat)命令之dir命令)