• WindowsBatch与LinuxShell比较[batch常见命令和字符串查找命令find/findstr]



    一 常见命令
    1) at 11:00/interactive "c:\hero\hero.exe"
    表示在11:00运行c:\hero\hero.exe,其中interactive是参数,表示允许作业在运行时与当时登录的用户桌面
    进行交互。

    2) 显示或更改文件属性。(也可以更改文件夹的属性)
    例 attrib d:\hero.txt
    显示d:\hero.txt的属性。
    例 attrib d:\hero.txt +h +s +r
    为d:\hero.txt添加隐藏、系统、只读的属性。
    例 attrib d:\hero.txt -h -s -r
    为d:\hero.txt去掉隐藏、系统、只读的属性。

    3)显示目录中的文件和子目录列表。
    DIR [drive:][path][filename] [/A[[:]attributes]] [/B] [/O[[:]sortorder]] [/S]
      /A          显示具有指定属性的文件。
      attributes   D  目录                R  只读文件
                   H  隐藏文件            A  准备存档的文件
                   S  系统文件            -  表示“否”的前缀
      /B          使用空格式(没有标题信息或摘要)。
      /O          用分类顺序列出文件。
      sortorder    N  按名称(字母顺序)     S  按大小(从小到大)
                   E  按扩展名(字母顺序)   D  按日期/时间(从先到后)
                   G  组目录优先           -  颠倒顺序的前缀

      /S          显示指定目录和所有子目录中的文件。

    dir命令参数较多,在此仅列出几个以供学习使用。
    例一、
    @echo off
    dir /b
    pause
    只列出当前目录下的文件名和子目录名。(如果没有“/b”参数,将会显示一些额外的信息。)
    例二、
    @echo off
    dir /s
    pause
    不仅列出当前目录下的文件名和子目录名,还列出子目录中的文件及子目录名。
    例三、
    @echo off
    dir /ah
    pause
    列出当前目录下隐藏文件的文件名。
    例四、
    @echo off
    dir /os
    pause

    按照文件的大小顺序显示当前目录下的文件。

    4)注册组件
    /u  解除注册
    /s  无声,不显示消息框

    例:regsvr32 /s hero.dll

    5) 显示日期。
    如果加上“/t”参数则只显示日期,而不用输入新日期。
    显示时间。
    如果加上“/t”参数则只显示时间,而不用输入新时间。

    6)用于将路径虚拟成磁盘
    例 subst X:  c:\hero
    将c:\hero虚拟成x盘。
    例 subst X: /d
    删除虚拟磁盘X。
    这个命令有时可以代替虚拟光驱。
    注:系统重启后虚拟的磁盘将消失。

    7) tree以图形显示驱动器或路径的文件夹结构。

    二 字符串查找命令

    1)在文件中搜索字符串。

    FIND "指定要搜索的文字串" 指定要搜索的文件
    例:
    @echo off
    find "hero" hero.txt >nul
    if errorlevel 1 echo 没找到!
    if errorlevel 0 echo 找到了!

    pause

    2) 在文件中寻找字符串。

    FINDSTR [/S] [/I] [/N] [/M] [/C:string] strings [[drive:][path]filename[ ...]]
      /S        在当前目录和所有子目录中搜索匹配文件。
      /I         指定搜索不分大小写。
      /N        在匹配的每行前打印行数。
      /M        如果文件含有匹配项,只打印其文件名。
      /C:string 使用指定字符串作为文字搜索字符串。
      strings   要查找的文字。
      [drive:][path]filename
                指定要查找的文件。

    除非参数有 /C 前缀,请使用空格隔开搜索字符串。
    例如: 'FINDSTR "hello there" x.y' 表示在文件 x.y 中寻找 "hello" 或
    "there" 。  'FINDSTR /C:"hello there" x.y' 表示在文件 x.y中寻找
    "hello there"。

    findstr正则表达式的基本用法:
    1.findstr . hero.txt 或 Findstr "." hero.txt  
    在文件hero.txt中查找任意字符,不包括空行。

    2.findstr .* hero.txt 或 findstr ".*" hero.txt
    从文件hero.txt中查找任意字符包括空行。

    3.findstr "[0-9]" hero.txt
    从文件hero.txt中查找包括数字0~9的行。

    4.findstr "[a-zA-Z]" hero.txt
    从文件hero.txt中查找包括任意字符的行。

    5.findstr "[dhyz]" hero.txt
    从文件hero.txt中查找包括d h y z字母的行。

    6.findstr "[a-hl-z]" hero.txt
    从文件hero.txt中查找小写字符a-h l-z的字符串,但不包含I j k这几个字母。

    7.findstr "h[aeg][jri]o" hero.txt
    从文件hero.txt中可以匹配hejo,hajo,hgio,hero等…。

    8. ^和$符号的应用
    ^ 表示行首匹配,"^hero"仅匹配 "heroisme"中的第一个单词。
    $ 表示行尾匹配,"hero$"仅匹配 "iamthehero"中最后一个单词。

    9.finstr "[^0-9]" hero.txt
    如果是纯数字的字符串或者行便过滤掉,例如123321235545这样的字符串,如果是dafsd4555232fd这样的形式就不可以了。

    10.findstr "[^a-z]" hero.txt
    同上,如果是纯字母的字符串或者行便过滤掉,例如sgfgsdfgdf这样的字符,如果是dasfdsf454f这样的形式,掺杂着数字就不可以了。

    11.*号的作用
    前面已经说过了 ".*"表示搜索的条件是任意字符,*号在正则表达式中的作用不是任何字符,而是表示左侧字符或者表达式的重复次数,*号表示重复的次数为零次或者多次。

    12.findstr "^[0-9]*$" hero.txt
    这个是匹配找到的纯数字,例如314531454,如果是53234523hh234就被过滤掉了。
       Findstr "^[a-z]*$" hero.txt
    这个是匹配找到的纯字母,例如 sdfsdfsdfsdf,如果是34fdaf454fdad就被过滤掉了如果在搜索条件里没有*号,也就是说不重复左侧的搜索条件,也就是[0-9] [a-z]那只能匹配字符串的第一个字符也只有这一个字符。

    13. "\<…\>"这个表达式的作用
    这个表示精确查找一个字符串,\< 表示字的开始位置,\>表示字的结束位置
    echo hello world hero|findstr "\<hero\>"这样的形式
    echo hello worldhero|findstr "\<hero\>" 这样的形式就不成了,他要找的是 "computer"这个字符串,所以不可以。

    echo hello worldhero|findstr ".*hero\>"这样就可以匹配了。

    完!


    作者:iTech
    微信公众号: cicdops
    出处:http://itech.cnblogs.com/
    github:https://github.com/cicdops/cicdops

  • 相关阅读:
    大数减法
    MySQL配置的一些坑
    最大流_Edmonds-Karp算法
    最小生成树两连
    最短路三连
    对拍
    Broadcast
    Intent
    Custom Views
    Fragment
  • 原文地址:https://www.cnblogs.com/itech/p/1590752.html
Copyright © 2020-2023  润新知