前记
DOS批处理的使用
1.常见内置环境变量
1.1.cd——当前工作目录
1.2.date——当前系统日期
1.3.time——当前系统时间
1.4.random——0~32767之间的随机数
1.5.errorlevel——错误级别变量
1.6.cmdextversion——命令行版本变量
1.7.cmdcmdline——命令行执行程序
1.8.path——执行路径
2.批处理控制语句
2.1.pause——批处理暂停
1
2
3
|
pause
pause > a
pause > nul
|
2.2.echo——回显设置
1
2
|
echo
off
cls
|
1
|
@
echo
off
|
1
2
3
|
@
echo
off
echo
Hello World!
pause > nul
|
1
2
3
4
5
|
@
echo
off
echo
.off
echo
.
echo
.msg
pause > nul
|
2.3.rem/::——代码注释
1
2
3
4
|
@
echo
off
rem
echo
空行
echo
,
pause > nul
|
2.4.set——变量管理
1
2
3
4
5
6
|
@
echo
off
set
var=abc
echo
var=%var%
set
var=
echo
var=%var%
pause > nul
|
1
2
3
4
5
6
7
|
@
echo
off
set
/a
a=1,b=2
set
/a
result=%a%+%b%
set
result1=%a%+%b%
echo
算术运算:%a%+%b%=%result%
echo
字符串:%a%+%b%=%result1%
pause > nul
|
1
2
3
4
|
@
echo
off
set
/p
info=请输入内容:
echo
你输入的内容为:%info%
pause > nul
|
2.5.cls——清屏
1
2
3
4
|
rem cls清除屏幕内容
echo
cls的使用
cls
pause > nul
|
2.6.color——批处理显示颜色设置
颜色值 | 颜色描述 | 颜色值 | 颜色描述 | 颜色值 | 颜色描述 |
0 | 黑色 | 6 |
黄色
|
C | 淡红色 |
1 | 蓝色 | 7 | 白色 | D | 淡紫色 |
2 | 绿色 | 8 | 灰色 | E | 淡黄色 |
3 |
湖蓝色
|
9 |
淡蓝色
|
F | 亮白色 |
4 | 红色 | A |
淡绿色
|
|
|
5 | 紫色 | B |
|
|
|
2.7.title——批处理程序标题设置
2.8.more——分页显示
2.9.if——条件判断(分支)语句
1
2
3
4
5
6
7
|
@
echo
off
if
abc==ABC (
echo
abc euqal ABC
)
else
(
echo
abc not euqal ABC
)
pause>nul
|
1
2
3
4
5
6
7
|
@
echo
off
if
%errorlevel%==0 (
echo
success!
)
else
(
echo
failed!
)
pause>nul
|
1
2
3
4
5
6
7
8
|
@
echo
off
if
exist C:\a.txt (
echo
file
is
find
!
del C:\a.txt
)
else
(
echo
file
is not found!
)
pause>nul
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
@
echo
off
set
var1=123
set
var2=abc
set
var3=12
if
/i
%var2% equ ABC (
if
%var1% geq %var3% (
echo
%var1%^>=%var3%
)
else
(
echo
%var1%^<%var3%
)
)
else
(
echo
%var2%不等于ABC
)
pause>nul
|
2.10.setlocal/endlocal——启动/结束延迟环境变量扩展功能
1
2
3
4
5
6
7
8
9
10
11
12
|
@
echo
off
set
var=before
if
"%var%"
==
"before"
(
set
var=after
if
"%var%"
==
"after"
(
echo
重置var的值成功[var=%var%]
)
else
(
echo
重置var的值失败[var=%var%]
)
)
echo
var=%var%
pause>nul
|
1
2
3
4
5
6
7
8
9
10
11
12
|
@
echo
off
setlocal enableDelayedExpansion
set
var=before
if
"!var!"
==
"before"
(
set
var=after
if
"!var!"
==
"after"
(
echo
重置var的值成功[var=!var!]
)
else
(
echo
重置var的值失败[var=!var!]
)
)
pause>nul
|
2.11.for——循环语句
1
2
3
4
|
@
echo
off
rem
for
变量元素例子
for
%%i
in
(1,3,5,7)
do
echo
%%i
pause > nul
|
1
2
3
4
5
6
|
@
echo
off
rem
for
混合元素例子
for
%%i
in
(1,*)
do
(
echo
%%i
)
pause > nul
|
1
2
3
4
5
6
7
|
@
echo
off
cd
C:\
test
echo
文件有:
for
%%f
in
(*)
do
echo
%%f
echo
目录有:
for
/d
%%d
in
(*)
do
echo
%%d
pause > nul
|
1
2
3
4
5
6
|
@
echo
off
echo
文件有:
for
/r
C:\
test
%%f
in
(*)
do
echo
%%f
echo
目录有:
for
/d
/r
C:\
test
%%d
in
(*)
do
echo
%%d
pause > nul
|
1
2
3
4
5
6
|
@
echo
off
echo
10以内的奇数:
for
/l
%%i
in
(1,2,10)
do
echo
%%i
echo
10以内的偶数:
for
/l
%%j
in
(10,-2,1)
do
echo
%%j
pause > nul
|
1
2
3
4
5
6
|
@
echo
off
for
/f
%%i
in
(
'echo HelloWorld!'
)
do
(
set
myvar=%%i
)
echo
myvar=%myvar%
pause > nul
|
选项表达式 | 说明 | 举例 |
eol=c | 指定忽略以“c”指定的字符开头的元素,只能是单个字符(如果集合为文件则指忽略以“c”开头的行) | eol=a(忽略a开头的行) |
skip=n | 指定忽略的元素数n,以第一个元素开始,只能为正整数(如果集合为文件则指跳过0-n行) | skip=3(忽略前3行) |
delims=xxx | 指定以“xxx”作为元素的界定符号,默认以空格符或换行符作为元素界定符号。可以包括多个字符,某一元素从第一个字符开始算起包含其中的某一个字符则视为终止,其后的字符将被忽略(如果集合为文件则指以“xxx”作为行的界定符号) | delims=。(使用“。”作为换行符) |
tokens=x,y,m-n | 表示取到每一个元素的第x字符赋值给临时变量,取第y个字符赋值给当前临时变量字母的下一个字母变量,取第m到n个字符组成的字符串赋值给下一个字母变量,一共可以有26个取值。可以使用通配符,*表示所有,?表示单个任意字符 | tokens=2表示取每一行的第二个字符;2,3表示取每一行的第二个和第三个字符;2-8表示取每一行第二个到第八个字符组成的字符串 |
usebackq | 用于标记引号("")或('')中的为文件名或命令行 | usebackq |
1
2
3
|
@
echo
off
for
/f
"delims=."
%%i
in
(
"a.txt"
)
do
echo
%%i
pause > nul
|
1
2
3
4
5
6
|
@
echo
off
cd
C:\
test
for
/f
"skip=2 tokens=2,3* delims= "
%%a
in
(
'dir'
)
do
(
echo
%%a--%%b--%%c
)
pause>nul
|
2.12.goto/:——跳转语句
1
2
3
4
5
6
7
8
9
10
11
12
|
@
echo
off
echo
准备跳转到a标签
goto a
echo
跳转到a标签后的语句
:a
echo
已经进入a标签
:b
echo
已经进入b标签
goto end
:end
echo
已经进入eof标签
pause
|
1
2
3
4
5
|
@
echo
off
:start
echo
an infinite loop
goto start
pause
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
@
echo
off
rem goto 语句练习,根据输入内容跳转到不同的标记位置
:start
set
/p
num1=输入第一个数:
set
/p
num2=输入第二个数:
set
/p
op
=选择操作符:1.加法 2.减法 3.乘法 4.除法
if
%
op
% == 1 goto add
if
%
op
% == 2 goto sub
if
%
op
% == 3 goto mul
if
%
op
% == 4 goto div
if
%
op
% ==
""
goto :eof
:add
set
/a
result=%num1%+%num2%
echo
%num1%+%num2%=%result%
goto end
:sub
set
/a
result=%num1%-%num2%
echo
%num1%-%num2%=%result%
goto end
:mul
set
/a
result=%num1%*%num2%
echo
%num1%*%num2%=%result%
goto end
:div
set
/a
result=%num1%/%num2%
echo
%num1%/%num2%=%result%
goto end
:end
set
/p
choose=是否退出? (Y
/N
):
if
/i
%choose% equ y (
exit
)
else
(
goto start
)
|
2.13.start——批处理启动
2.14.call——批处理调用
1
2
3
|
@
echo
off
call
test
.bat
test
pause
|
1
2
3
|
@
echo
off
echo
%0----%1
pause > nul
|
1
2
3
4
5
6
7
8
|
@
echo
off
call :lable aaa
"b b"
pause
:lable
echo
firstParam=%0
echo
secondParam=%1
echo
thirdParam=%2
pause
|