美文网首页
bat脚本学习NO:02

bat脚本学习NO:02

作者: Butif_D | 来源:发表于2019-01-22 18:08 被阅读0次

    morehttps://www.cnblogs.com/iTlijun/p/6137027.html

    MODE配置系统参数:
    mode con cols=100 lines=40 & color 27      设置窗口尺寸&颜色;
    mode con cp select=936                     更改窗口显示的语言 936中文;
    mode con rate=40 delay=2                   键入速度,键盘延迟
    
    Snipaste_2019-01-21_17-20-54.png
    GOTO :
    @ECHO OFF
    :st                   标记(:)
    SET /a v+=1           初始化
    ECHO %v%              打印
    if %v% leq 4 GOTO st  判断语句  满足条件跳转
    结果:1 2 3 4 5 {满足条件后跳转执行一次}
    
    SET:
          1.初始化变量; set a = ??;
          2.SET /P variable=[promptString] 接受界面参数
                    eg:set /p a=     /*这个变量a的值有界面输入*/
                        echo %a%
          3.echo set /a 命令行开关指定等号右边的字符串为被评估的数字表达式
                    eg:set /a f = 1-0
                          echo %f%
                    
    /A 命令行开关指定等号右边的字符串为被评估的数字表达式。该表达式
    评估器很简单并以递减的优先权顺序支持下列操作:
    
    ()                  - 分组
    ! ~ -               - 一元运算符
    * / %               - 算数运算符
    + -                 - 算数运算符
    << >>               - 逻辑移位
    &                   - 按位“与”
    ^                   - 按位“异”
    |                   - 按位“或”
    = *= /= %= += -=    - 赋值
      &= ^= |= <<= >>=
    ,                   - 表达式分隔符
    
    如果你使用任何逻辑或取余操作符, 你需要将表达式字符串用引号扩起来。
    //······················ set 字符串截取·········································
    
    set a=abcdefg
    set b=%a:~1,2%   【bc】
    set c=%a:~1,-2%  【bcde】 
     ~1 : 索引开始 ;  2:长度(如果为复数【-2】;表示倒数的第几位结束)
    
     //······················ set 替换(替换所有)·································
    set a=abcdabcd
    set b=%a:d=x%   【abcxabcx】
    
    IF
    1.判断字符串 ==
        set str=hello world
        if "%str%"=="hello" ??? else ???                   ifelse语句(注意""的使用)
    2.数值的判断(
       EQU - 等于 
       NEQ - 不等于 
       LSS - 小于 
       LEQ - 小于或等于 
       GTR - 大于 
       GEQ - 大于或等于);
     if %num1% gtr %num2% echo %num1%大于%num2%
    3.与errorlevel使用
        title 现在的时间是:%date% %time%
        set /p uri=
        md %uri%
        if errorlevel 0 echo 0
    4.defined  判断定义与否  ;   exist 通过文件名判断创建与否 
      if defined var    
      if exist a.txt   
    
    FOR

    more: https://www.cnblogs.com/dongzhuangdian/p/8169066.html
    在cmd 中变量引用:for %a in (123456) do ???
    在批处理中:for %%a in (123456) do ???

    for /l :  for /L %variable in (start,step,end) do command [command-parameters]
        标注起点; 步长 ;终点的循环
    for /D %variable in(set) do command [command-parameters]
         for /d %%i in (C:\*) do echo %%i
         in后面的元素集合中有通配符?* 时,匹配文件夹
    for /R [[drive:]path] %%variable in (set) do command [command-parameters]
        for /r f:\ %%i in (.) do echo %%i   遍历文件夹 ;效果相同于dir /ad /b /s f:\
        如果在 /R 后没有指定目录规范,则使用当前目录。如果集仅为一个      
        单点(.)字符,则枚举该目录树。
    for /F ["options"] %variable in (file-set) do command [command-parameters]解析文本专用
        for /F %%i in (test.txt) do echo %%i   按行遍历文本内容;
        for /f "delims=," %%i in (test.txt) do echo %%i  
        eol=c           - 忽略以指定字符开头的行;(这个字符不能有多个)
                    ;-->OK        ,;-->NOT
        skip=n          - 指在文件开始时忽略的行数。
        delims=xxx      - 指分隔符集。这个替换了空格和制表符的
                          默认分隔符集。
              delims=* 不会忽略空格
        tokens=x,y,m-n  - 指每行的哪一个符号被传递到每个迭代
                          的 for 本身。这会导致额外变量名称的分配。m-n
                          格式为一个范围。通过 nth 符号指定 mth。如果
                          符号字符串中的最后一个字符星号,
           tokens=2,3 -->   那么额外的变量将在最后一个符号解析之后 如果 tokens= 后面指定了
    多个数字,如果形式变量为%%i。那么,第 一个数字指代的内容用第一个形式变量 %%i 来接收,第二
    个数字指代的内容用第二个形式变量 %%j 来接收,第三个数字指代的内容用第三个形式变量 %%k 来接收
    ……第N个数字指代的内容用第N个形式变量来接收。其中,形式变量遵循字母的排序,第N个形式变量具体
    是什么符号,由第一个形式变量来决定:如果第一个形式变量是%%i,那么,第二个形式变量就是%%j;
    如果第一个形式变量用的是%%x,那么,第二个形式变量就是%%y。
      eg:for /f "delims=;, tokens=2,4" %%i in (??.txt) do echo %%i %%j
                tokens=1,2,4,5  同  tokens=1-2,4-5 ;tokens=1,2,4-5
    
    for /f "delims=;, tokens=1,*" %%i in (???.txt) do echo %%i %%j 
    tokens=后面所接的星号具备这样的功能:依切分字符,将字符串从左往右切分成紧跟在*之前最大数值
    所表示的节数之后,字符串的其余部分保持不变,且整体被*所表示的一个变量接收。(* 被 %%j 接收)
    
    for语句选择:
    for/F ["options"] %variable in (file-set) do command [command-parameters]
    如果是文件,则无需包裹。
    for /F ["options"] %variable in ("string") do command [command-parameters]
    如果是命令语句,则用单引号包裹。
    for /F ["options"] %variable in ('command') do command [command-parameters]
    如果是字符串,则使用双引号括起来。
     ↓***************↓
    for /f "usebackq" %%i in ("test 6.txt") do echo %%i
    usebackq 是一个增强型参数,使用这个参数后,原来的for语句中第一个括号内的写法要做如下变动;
    如果第一个括号里的对象是一条命令语句的话,原来的单引号‘’要改为后引号``;(esc下面的按键)
    如果第一个括号里的对象是字符串的话,原来的双引号"要改为单引号';
    如果第一个括号里的对象是文件名的话,要用双引号"括起来。
    
    FIND TYPE (查找)
    FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "string" [[drive:][path]filename[ ...]]
    /V 显示所有未包含指定字符串的行。
    /C 仅显示包含字符串的行数。
    /N 显示行号。
    /I 搜索字符串时忽略大小写。
    /OFF[LINE] 不要跳过具有脱机属性集的文件。
    "string" 指定要搜索的文字串,
    [drive:][path]filename
    eg:FIND  /V  /N "public" abcd.txt
        TYPE abcd.txt | FIND /V /N "public"
        ⬆{效果一样}
    
    START命令
    ”多线程命令“
      start explorer F:\     调用图形界面打开F盘
      start "????"           重启一个控制台窗口
    
    ASSOC FTYPE
    assoc .???  #        显示文件扩展名关联的类型
        assoc .txt #     --> exefile 
    
    ftype ??? #          文件类型的关联
        ftype exefile #  -->exefile="%1" %* 
    

    感谢!@小德cyj@ iTlijun

    相关文章

      网友评论

          本文标题:bat脚本学习NO:02

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