主页 > 知识库 > Windows中的批处理的常用符号介绍

Windows中的批处理的常用符号介绍

热门标签:科大讯飞语音识别系统 电销机器人源码 铁路电话系统 硅谷的囚徒呼叫中心 电销机器人 呼叫中心案例 电话机器人搭建 万科
 1.@ 命令行回显屏蔽符 
       ECHO OFF可以关闭掉整个批处理命令的回显,但不能关掉ECHO OFF这个命令本身,现在我们在ECHO OFF这个命令前加个@,就可以达到所有命令均不回显的要求。
      该符号在批处理中的作用是关闭当前行命令的回显,也就是不显示执行的是什么命令,只显示命令的结果!
      2.> 重定向符        将>之前的命令执行的结果输出到>之后指定的设备或文件中去,特定的文件或标准输出(stdout--默认为系统控制台),若文件中有数据则覆盖。
      >> 重定向符   
            需要显示的数据追加到指定的输出文件之中,而不覆盖原来的内容。
      输入重定向
            将输入信息来源重定向为指定的设备或文件,系统默认接收键盘输入。
      >将一个句柄的输出写入到另一个句柄的输入中
      刚好和>相反,从一个句柄读取输入并将其写入到另一个句柄输出中
            常用句柄0、1、2,未定义句柄3-9
            其中的1与2都是代表某个数据流输入输出的地址(NT CMD 称之为句柄,MSDOS称之为设备)。
        句柄0:标准输入stdin,键盘输入
        句柄1:标准输出stdout,输出到命令提示符窗口(console,代码为CON)
        句柄2:标准错误stderr,输出到命令提示符窗口(console,代码为CON)
        其中的stdin可被重定向,stdout可被>、>>重定向,而stderr在DOS下不可直接重定向,只有通过ctty或其它命令将系统控制权转交给其它设备的方式,来间接完成。
      注意:如果用在 set /a 语句中,则>表示分组,>>表示逻辑移位。
Dos代码 
@echo off 
@rem echo 关闭命令显示,@关闭echo off本身的显示 
rem ==============设置标题title================= 
rem -使用该文件的名称作为标题 
title 测试bat的文件(test.bat--重定向) 
rem ===============重定向符>===================== 
rem 将当前文件的内容输出到指定的文件tb.txt而非控制台 
type d:\test\bak\tt.txt>d:\test\bak\tb.txt 
rem 将特定的字符串"Hello China "(注意最后的空格)写入到指定的文件 
echo Hello China >d:\test\bak\tc.txt 
rem ===============重定向符>>==================== 
echo hello>d:\test\bak\td.txt 
echo world>>d:\test\bak\td.txt 
rem ===============重定向符===================== 
rem 重新设定当前时间 
echo 2010-01-12>d:\test\bak\te.txt 
date d:\test\bak\te.txt 
del d:\test\bak\te.txt 
rem ===============重定向符===================== 
rem 如果e盘存在则将其下面的文件信息输出到te.txt 否则将错误信息输出到err.txt 
dir e:\ 1>d:\test\bak\te.txt 2>d:\test\bak\err.txt 
@pause 
     3.| 命令管道符
      管道命令,将|之前的命令的输出作为|之后的命令的输入。
      格式:第一条命令 | 第二条命令 [| 第三条命令...]
Dos代码 
@echo off 
@rem echo 关闭命令显示,@关闭echo off本身的显示 
rem ==============设置标题title================= 
rem -使用该文件的名称作为标题 
title 测试bat的文件(test.bat--管道命令) 
rem =================管道命令|=================== 
rem 将显示tom001 tom002 
rm d:\test\bak\t001.txt 
echo tom001>d:\test\bak\t001.txt 
echo neil001>>d:\test\bak\t001.txt 
echo tom002>>d:\test\bak\t001.txt 
echo neil002>>d:\test\bak\t001.txt 
echo jerry>>d:\test\bak\t001.txt 
type d:\test\bak\t001.txt | find "tom" 
@pause 
      4.^ 转义字符
      对特殊符号"",">",""的前导字符,在命令中他将以上3个符号的特殊功能去掉,仅仅把他们当成符号而不使用他们的特殊意义。
      另外,此转义字符还可以用作续行符号。
Dos代码 
@echo off 
@rem echo 关闭命令显示,@关闭echo off本身的显示 
rem ==============设置标题title================= 
rem -使用该文件的名称作为标题 
title 测试bat的文件(test.bat--转义字符) 
rem =================转义字符^================== 
rem 用来转义 输出hello china > d:\test\bat\t.txt 
echo hello china ^> d:\test\bat\t.txt 
rem 用来续行行 输出结果为 hellochinaluchunli 
echo hello^ 
china^ 
luchunli 
@pause 
     5. 组合命令
            允许在一行中使用2个以上不同的命令,当第一个命令执行失败了,也不影响后边的命令执行。
            语法:第一条命令 第二条命令 [ 第三条命令...]
       组合命令
             用这种方法可以同时执行多条命令,当碰到执行出错的命令后将不执行后面的命令,如果一直没有出错则一直执行完所有命令
             语法:第一条命令 第二条命令 [ 第三条命令...]
             这个命令和上边的类似,但区别是,第一个命令失败时,后边的命令也不会执行。
      || 组合命令
             用这种方法可以同时执行多条命令,当一条命令失败后才执行第二条命令,当碰到执行正确的命令后将不执行后面的命令,如果没有出现正确的命令则一直执行完所有命令。
             语法:第一条命令 || 第二条命令 [|| 第三条命令...] 
      提示:组合命令和重定向命令一起使用必须注意优先级
  管道命令的优先级高于重定向命令,重定向命令的优先级高于组合命令。
Dos代码 
@echo off 
@rem echo 关闭命令显示,@关闭echo off本身的显示 
rem ==============设置标题title================= 
rem -使用该文件的名称作为标题 
title 测试bat的文件(test.bat--组合命令) 
rem =================组合命令================== 
dir d:\test\aa dir d:\test\all 
rem k盘不存在 不影响命令执行 
dir k:\ dir d:\test\all 
rem =================组合命令================= 
rem k盘不存在 程序无法再执行 
dir k:\ dir d:\test\all 
rem =================组合命令||================= 
rem k盘不存在 执行错误 后面的dir才执行 
dir k:\ || dir d:\test\all 
rem ========结合使用组合命令和重定向命令======== 
dir c:\ dir d:\ > d:\test\bak\t002.txt 
rem 上述命令执行结果只有d盘下面的目录到t002.txt去了 
rem c盘下面的目录并没有按照预想的输出,而是打印在了控制台上 
rem 修改成为,分别进行输出 
dir c:\ > d:\test\bak\t003.txt dir d:\ >> d:\test\bak\t003.txt 
@pause 
    6."" 双引号
    双引号允许在字符串中包含空格。
           cd "program files"
           cd progra~1
           cd pro*
           以上三种方法都可以进入program files这个目录
      7., 逗号
      逗号相当于空格,在某些情况下","可以用来当做空格使。
            如:dir,c:\
      8.; 分号
      当命令相同时,可以将不同目标用";"来隔离,但执行效果不变,如执行过程中发生错误,则返回错误报告。
             如:dir c:\;d:\;e:\;f:\
Dos代码 
@echo off 
@rem echo 关闭命令显示,@关闭echo off本身的显示 
rem ==============设置标题title================= 
rem -使用该文件的名称作为标题 
title 测试bat的文件(test.bat--分号) 
rem ==============分号;================= 
rem c d e f磁盘都存在,则正确执行,显示各磁盘下文件目录 
dir c:\;d:\;e:\;f:\&;
echo --------------------- 
rem z盘不存在则程序返回错误,对于d e f均不再执行 
dir z:\;d:\;e:\;f:\&;
@pause 
      9.% 批处理变量引导符
      表示参数,参数是指在运行批处理文件时在文件名后加的字符串。引用变量用%var%,调用程序外部参数用%1至%9等等。
               %0   %1   %2   %3   %4   %5   %6   %7   %8   %9   %*为命令行传递给批处理的参数
           %0 批处理文件本身,包括完整的路径和扩展名
           %1 第一个参数
           %9 第九个参数
           %* 从第一个参数开始的所有参数
  参数%0具有特殊的功能,可以调用批处理自身,以达到批处理本身循环的目的,也可以复制文件自身等等。
   %%批处理变量引导符。
      set str=abc
      echo 变量 str 的值为%str%
      %也可以作为转义字符
            echo %% 输出一个%
            echo %%%% 输出两个%
Dos代码     
@echo off 
@rem echo 关闭命令显示,@关闭echo off本身的显示 
rem ==============设置标题title================= 
rem -使用该文件的名称作为标题 
title 测试bat的文件(test.bat--变量引导符) 
rem ==============变量引导符%=================== 
rem %0 代表当前文件本身 输出路径名和文件名 
echo %0  
rem 可以通过%0来拷贝自身(将当前文件的内容拷贝到tt.txt中去) 
copy %0 d:\test\bak\tt.txt 
rem 可以通过设置参数来接受输入的变量,但是不能有空格 
rem 如:set param001 = %1则取不到任何结果,只能为set param001=%1 
rem 批处理接受参数,如:test.bat tom is boy 
set param001=%1 
set param002=%2 
set param003=%3 
rem 输出 tom is boy 
echo %param001% %param002% %param003% 
rem %只能接受%1到%9九个参数,若参数多云9个则无法接受,需使用shift命令,见shift命令讲解 
rem % 与 %%的用法 
rem =两端不可有空格 
set str=abc 
echo str 的值是 %str% 
rem 以下分别输出一个% 两个% 三个% 
echo %% 
echo %%%% 
echo %%%%%% 
echo hello>d:\test\bak\t004.txt 
echo china>>d:\test\bak\t004.txt 
echo how>>d:\test\bak\t004.txt 
echo are>>d:\test\bak\t004.txt 
echo you>>d:\test\bak\t004.txt 
rem 依次输出hello china how are you 
for /f %%i in (d:\test\bak\t004.txt) do echo %%i 
rem 依次输出a b c 
for %%i in (a b c) do echo %%i 
@pause 
      10.() 括号  小括号在批处理编程中有特殊的作用,左右括号必须成对使用,括号中可以包括多行命令,这些命令将被看成一个整体,视为一条命令行。
   括号在for语句和if语句中常见,用来嵌套使用循环或条件语句,其实括号()也可以单独使用。
        注意:这种多条命令被视为一条命令行时,如果其中有变量,就涉及到变量延迟的问题。
       在for和if语句中属于语句格式的要求
       例如:
           for %%i in (语句1) do(语句2)
             在这条语句中,语句1必须用括号对包围,而语句2的括号对则可视情况予以抛弃或保留:如果语句2是单条语句或用、、||等连接符号连接的多条语句,括号对可以抛弃,如果语句2是有逻辑先后关系的多条语句集合,则必须保留括号对,并且,多条语句必须断行书写。
             if 条件 (语句1) else (语句2)
             如果没有else部分,则语句1的括号对可有可无;如果有else部分,则语句1中的括号对必须保留,此时,语句2中的括号对保留与否,和上一点类似。
Dos代码 
@echo off 
@rem echo 关闭命令显示,@关闭echo off本身的显示 
rem ==============设置标题title================= 
rem -使用该文件的名称作为标题 
title 测试bat的文件(test.bat--括号) 
rem ==================括号()==================== 
rem 输出1 2 3 每个单独占一行 
echo 1 echo 2 echo 3 
echo -------------- 
(     
    echo 1 
    echo 2 
    echo 3 

@pause 
      11.! 感叹号
             在变量延迟问题中,用来表示变量,即%var%应该表示为!var!,见setlocal介绍。
             在set /a 一元运算符中表示逻辑非
      12.: 冒号
      任何以冒号:开头的字符行, 在批处理中都被视作标号, 而直接忽略其后的所有内容。
      有效标号:冒号后紧跟一个以字母数字开头的字符串,goto语句可以识别,表示该行是一个标签,它之后的内容是一个标签段。
      如:test,则表示:test之下的内容是标签段,而test是这个标签段的名,可以用 goto test 、goto :test 跳转 到该标签段或用call :test 调用该子过程。
      在 set 语句中:和~同时使用时,:起到截取字符串的功能。
            假设 set str=abcde,那么,set var=%str:~0,1% 表示截取字符串abcde的第一个字符;
      和=同时使用时,起到替换字符串的功能。
            假设:set str=abc:de,那么,set var=%str:a=1% 表示把字符串abc:de中的a替换为1
      无效标号:冒号后紧跟一个非字母数字的一个特殊符号,goto无法识别的标号,可以起到注释作用,所以 :: 常被用作注释符号,其实 :+ 也可起注释作用。
Dos代码     
@echo off 
@rem echo 关闭命令显示,@关闭echo off本身的显示 
rem ==============设置标题title================= 
rem -使用该文件的名称作为标题 
title 测试bat的文件(test.bat--冒号) 
rem ===================冒号:==================== 
rem 作为标签段 
set num=3 
set count=4 
set /a flag=num+1 
:: 关于判断相等若不加goto end则程序执行有问题 
if %count%==%flag% goto begin 
goto end 
:begin 
    echo This is begin 
:end 
    echo This is end 
rem 截取/替换字符 
set str=luchunli 
set var001=%str:~2,7% 
rem 输出 chunli 
echo %var001% 
set var002=%str:u=r% 
rem 输出 lrchrnli 
echo %var002% 
@pause 
     13.:: 注释符号
      表示该行内容为注释内容。:: 是个无效的标签名,:加上空格同样可以起到注释的作用。
      ::的功能和注释命令rem相同。
      但是还有几点区别
            (1)::后的字符行在执行时不会回显, 无论是否用echo on打开命令行回显状态。
            (2)rem 注释语句中的某些命令符号如重定向符号和管道符号还是会执行,而如果用::来注释的时候,与::同处一行的所有命令或符号直接被命令解释器忽略掉,无形中提高了注释的兼容性和整个程序的执行效率,并且在众多的命令语句中更显得醒目,所以,注释语句推荐使用::的格式。   
            (3)rem 可以用于 config.sys 文件中。
Dos代码 
rem ==============注释命令符号::================= 
rem 以下两句都不会执行 
rem tt>d:\test\bak\t.txt 
:: ttb>>d:\test\bak\t.txt 
      14.~
      和冒号(:)一起使用时起到截取字符串的功能。
      在set /a语句中时,它是一元运算符,表示将操作数按位取反。
            例如,set /a num=~1的执行结果是-2,set /a num=~0的结果是-1
      用在for语句中,表示增强for的功能,能够提取到更多的信息。 
            例如:在批处理文件的for语句中:%%~i表示去掉第一对外侧引号,%%~zi表示获取文件的大小(以字节为单位),%%~ni表示获取文件名,%%~xi表示获取扩展名(带点号)……它们可以组合使用,如%%~nxi表示获取文件名和后缀名。
      15.+ - * /
      在 set /a 语句中,这些符号的含义分别为:加、减、乘、除。例如:set /a num=1+2-3*4/5。
      需要注意的是,这些运算符号遵循数学运算中的优先级顺序:先乘除后加减,有括号的先算括号,并且,直接忽略小数点,因此,刚才那个算式的结果是1而不是0或0.6。
   另外,有可能会在代码中看到这样的写法:set /a num+=1、set /a num-=1、set /a num*=1 和 set /a num/=1,这些表示累加、累减、累乘、累除,步长都是1,展开后的完整写法为:set /a num=num+1、set /a num=num-1、set /a num=num*1 和 set /a num=num/1(set /a 语句中,变量引用可以忽略百分号对或感叹号对,set /a num=%num%+1 与 set /a num=num+1 等同)
      16.equ neq lss leq gtr geq
                   命令符号         含义                 英文解释
                   EQU                 等于                 equal
                   NEQ                 不等于                 not equal
                   LSS                 少于                 less than
                   LEQ                 少于或等于          less than or equal
                   GTR                 大于                  greater than
                   GEQ                 大于或等于          greater than or equal
Dos代码 
rem ==========equ neq lss leq gtr geq=========== 
set str001=tom     
set str002=tom 
rem equ 输出equal 
if %str001% equ %str002% echo equal 
       17.点(.)和双点(..)
               一个点代表当前目录;两个点代表上一级目录。
       18.问号(?)
               匹配任意一个字符
               在路径中代表任意一个统配符
               紧跟在/之后表示获取帮助,如if /? 和 set /?

标签:南通 黔东 黄石 株洲 新余 天门 六安 呼和浩特

巨人网络通讯声明:本文标题《Windows中的批处理的常用符号介绍》,本文关键词  ;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 收缩
    • 微信客服
    • 微信二维码
    • 电话咨询

    • 400-1100-266