您现在的位置是:网站首页> 编程资料编程资料
Windows中的批处理的常用符号介绍_windows_Windows系列_操作系统_
2024-01-07
425人已围观
简介 Windows中的批处理的常用符号介绍_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
datedel 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/
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
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/
相关内容
- windows以管理员权限运行命令的方法介绍_windows_Windows系列_操作系统_
- 64位下无法运行32位程序的解决方法 提示未指定提供程序,也没有指派的默认提供程序_windows_Windows系列_操作系统_
- Windows中Alt键的12个高效快捷的使用技巧介绍_windows_Windows系列_操作系统_
- Win7/WinPE/XP多系统独立启动设置方法_windows_Windows系列_操作系统_
- 安全账户管理器初始化失败 lsass.exe 0XC0000(SAM文件问题)_windows_Windows系列_操作系统_
- 硬盘的DMA模式被改为PIO模式的解决方法_windows_Windows系列_操作系统_
- 怎么设置开机启动项 开机启动项如何设置 _windows_Windows系列_操作系统_
- 电脑硬盘之磁盘自动扩展和收缩的使用方法(图文教程)_windows_Windows系列_操作系统_
- Windows无法访问指定设备路径或文件,您可能没有合适的权限访问这个项目_windows_Windows系列_操作系统_
- 海岛奇兵保险库详细数据介绍_手机游戏_游戏攻略_
