pause>nul
2.屏蔽输出内容(nul)
@echooff
echo屏蔽输出内容1
echo屏蔽输出内容2
pause
rem>nul或者1>nul作用是屏蔽成功执行命令的输出内容
echo屏蔽输出内容31>nul
rem2>nul作用是屏蔽命令执行失败的输出内容
echo屏蔽输出内容42>nul
rem1>nul2>nul作用是屏蔽的所有输出提示[不论正确与否]
pause>nul
echo.
pause
3.变量延迟setlocal语句
@echooff
echo变量延迟:
读取完整条语句之后,不立即对该行变量赋值,而在下个单条语句前赋值。
echo.
echo变量延迟的作用,说简单点,就是将“复合语句”拆分成“单条语句”,即实现了“延迟”,再进行赋值预处理。
echo.
echo例1.没有启动变量延迟
seta=4&echo%a%
echo由于要读取整条语句后,才能变量赋值,在该语句之前,变量a为空值,因此将执行echo的命令,显示“echo处于打开状态/echo处于关闭状态”
seta=5&echo%a%
echo%a%
echo.
pause>nul
echo例2.启动变量延迟
setlocalenabledelayedexpansion
seta=4
echo!
a!
seta=5&echo!
a!
echo.
pause>nul
:
%%application
echo例3.启动变量延迟
@echooff
echo****开始前的set赋值语句****
echo.
setdoct=abcde
echosetdoct=%doct%
echo.
setdoct1=abcde123
echosetdoct1=%doct1%
echo.
set%i=456
echoset%%i=456
echo.
echoRem:
"set赋值,set%%i=%i%,由于屏蔽一个%%,所以执行seti=%i%"
seti=123
echo.
echoseti=123
echo.
echoRem:
"set赋值,seti=%i%"
echo.
echo.
echo****for循环语句中的%%应用****
echo.
echofor循环中﹪﹪i是第一个参数,也就是0
echo.
echo如果i字符前加个﹪,在命令行中会屏蔽这个﹪,而且﹪只有相邻的﹪进行组合匹配,其实例如下:
echo.
for/l%%iin(010)do(
echosetdoct﹪﹪i=﹪﹪i,这里执行"doct0=0"赋值命令
setdoct%%i=%%i
echo.
echoecho﹪﹪i
echo%%i
echo﹪﹪i代表第一个参数,他不是变量,这里的值为0,结果为"0"
echo.
echoecho!
﹪﹪i!
echo!
%%i!
echo由于﹪﹪i的参数值从0~0,而0数值不是变量,因此无效,即执行echo的命令,显示“ECHO处于打开状态/echo处于关闭状态”
echo.
echoechoi
echoi
echoi代表是一个string
echo.
echo"echo!
i!
"
echo!
i!
echo.
echoecho﹪i
echo%i
echo.
echoecho!
﹪i!
echo!
%i!
echo在变量延迟中,用!
!
括起来,表示可以延迟的变量
echo.
echoecho﹪﹪doct﹪﹪i﹪i﹪
echoRem:
前面两个"﹪﹪"显示"﹪",接下来是字符"doct",接下来"﹪﹪i"显示"0",接着"﹪i﹪",显示变量i的值"123",所以结果为"﹪doct0123"
echo%%doct%%i%i%
echo.
echoecho﹪﹪doct﹪﹪i﹪i,其结果为"﹪doct0i"
echo%%doct%%i%i
echo.
echoecho﹪﹪doct﹪﹪i﹪i
echo%%doct%%i%i
echo.
echoechodoct﹪﹪i
echodoct%%i
echo.
echoecho﹪doct﹪﹪i﹪,第一个﹪与第二个﹪中间为doct,接着为﹪i﹪,变量i的值,其结果为"%doct%%i%"
echo%doct%%i%
echo上述将doct变量与i变量的值组合显示,而不是显示“doct%%i”变量的值
echo.
echoecho﹪doct﹪﹪i﹪"
echo%doct%%i%
echo由于没有加!
!
echo.
echoecho!
doct﹪﹪i!
echo!
doct%%i!
echo.
)
pause
4.%与for语句的应用
:
:
@echooff
setlocalenabledelayedexpansion
for/l%%iin(1,1,5)do(seta=%%i&echo!
a!
)
pause
seta=1&echo%a%
seta=1&echo!
a!
seta=2&echo!
a!
seta=3&echo!
a!
seta=4&echo!
a!
seta=5&echo!
a!
pause
rem如果批处理中有2个%,在命令行里屏蔽1个%;如果是1个%,命令行直接屏蔽。
echo1
setA=123
:
:
(A=123)
set%B=345
:
:
(B=345)
set%%A=567
:
:
(%A=567)
set%%%D=456
:
:
(%D=456)
set%%%%A=789
:
:
(%%A=789)
echoA
echo%A
:
:
(=echoA)
echo%A%
:
:
(123)
echo%%A
:
:
(=echo%A)
echo%%A%
:
:
(=echo%A)
echo%%A%
:
:
(=echo%A)
echo%%%A
:
:
(=echo%A)
echo%%%A
:
:
(=echo%A)
echo%%%A%
:
:
(=echo%123)
echo%%%A%
:
:
(=echo%123)
echo%%%%A
:
:
(=echo%%A)
echo%%%%A
:
:
(=echo%%A)
echo%%%%A%
:
:
(=echo%%A)
echo%%%%A%
:
:
(=echo%%A)
pause
5.FOR参数F与变量延迟的综合应用
@echooff
for/f"tokens=*"%%1in("abaacadaaeaf")do(
set.=%%1
callset.=%%.:
aa=@%%
for/f"tokens=1-3delims=@"%%1in('callecho%%.%%')doecho%%1%%2%%3
)
pause>nul
setlocalenabledelayedexpansion
for/f"tokens=*"%%1in("abaacadaaeaf")do(
setA=%%1
setA=!
A:
aa=@!
echo!
A!
for/f"tokens=1-3delims=@"%%1in("!
A!
")doecho%%1%%2%%3
)
pause>nul
rem首先建立临时文件test.txt
echo;注释行,这是临时文件,用完删除>test.txt
echo11段12段13段14段15段16段>>test.txt
echo21段,22段,23段,24段,25段,26段>>test.txt
echo31段-32段-33段-34段-35段-36段>>test.txt
pause
FOR/F"eol=;tokens=1,3*delims=,-"%%iin(test.txt)doecho%%i%%j%%k
Pause
FOR/F"eol=delims="%%iin(test.txt)doecho%%i
Pause
Deltest.txt
6.FOR参数R和D应用
@echooff
:
parameters/d
for/d%%iin(d:
\*)doecho%%i>>1.txt
pause
del1.txt
:
parameters/r
for/rd:
\%%iin(*.exe)do@echo%%i>>2.txt
pause
del2.txt
:
seachini
for/rc:
\%%iin(boot.ini)doifexist%%iecho%%i
pause
7.循环字
@echooff
setlocalEnableDelayedExpansion
setline=我是要循环的字~我的长度是15
echo%line%
pause
for/l%%iin(0,1,15)do(
set/p=!
line:
~%%i,1!
ping127.1-n2>nul
)
pause
for/l%%iin(1110)do(
set/p=Ofor/l%%ain(1110)dover>nul
)
pause>nul