美文网首页
批处理(bat)命令之dir命令

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

作者: 抄无止境 | 来源:发表于2018-11-02 19:19 被阅读19次

    我为了查找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命令

          本文链接:https://www.haomeiwen.com/subject/txocxqtx.html