1.变量
set A=hello world
将hello world赋值给变量A
参数:
-
/A 后面的赋值语句为简单的数值运算
set /a num=1+1 -
/P 后面的语句作为提示用户语句
set /p file=input filename:用户可以在窗口中输入
2.if
if (condition) do_something
例如:
if exist person.txt echo file exist
如果 person.txt 存在,则显示 file exist .
if %num% == 2 (echo value=2) else (echo value!=2)
如果变量 num 的值为 2 ,显示 value=2 , 否则显示 value!=2 .
if %string%==String1 (echo String1) else (
if %string%==String2 (echo String2) else (
if %string%==String3 (echo String3)
)
)
3.for
for %%variable in (list) do do_something
注:在 .bat 文件中,循环变量为 %%variable 。在 cmd 中,循环变量写为 %variable 。
例如
for %%I in (1, 2, 3, 4, 5) do echo %%I
输入为:
1
2
3
4
5
for %%I in (*.txt) do echo %%I
遍历当前目录下所有以 .txt 结尾的文件,并逐个显示到屏幕
输出为:
a.txt
b.txt
c.txt
高级用法
参数:
-
/F 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]其中file-set为一个或多个文件名。for 语句会逐一分析指定的每个文件,打开指定文件、读取并处理文件内容。处理包括读取文件内容,将文件内容逐行读取,然后将每行解析成零或更多的符号(默认使用空格作为分隔符)。
例如
// test.txt 姓名 年龄 成绩 张三 10 98 李四 11 89 // test.bat @echo off for /F %%I in (test.txt) do ( echo %%I ) pause //输出 姓名 张三 李四 // 解析:在for循环中,逐行读取test.txt文件中的内容。默认使用空格做分割,然后将分割后的值显示。(这里被分割后只剩每行的第一列了)-
eol=#
指定读取到的以
#开头的行为注释行,忽略不进行处理 -
skip=n
指定在for语句解析每个文件时,从文件头部跳过的行数
-
delims=xxx
指定分隔符号集,替换for语句默认的空格和制表符。
-
tokens=x,y,m-n
- tokens=m 表示提取第m列;
- tokens=m,n 表示提取第m列和第n列;
- tokens=m-n 表示提取第m列至第n列;
- tokens=* 忽略行首的所有空格;
- tokens=m* 提取第m列以后的所有字符,星号表示剩余的字符;
例如
for /f "delims= skip=1" %%I in ('dir /a test* /b') do echo "%%I"找出所有以
test开头的文件,并输入其文件名。delims= skip=1将文件名含空格的仍作为一个整体输出为:
"test 1.txt" "test 2.txt" "test test .txt" -
4.函数
:funtion_name
your code
exit /b 0
例如:
:count
set /a num+=1
if %num%==100 echo 循环到100次了
goto count
定义了一个名为 count 的函数,其功能为每调用一次该函数,num 的值都 +1 ,然后继续调用该函数。形成一个无限循环。
5.goto
goto function_name
跳转到某个函数中去执行
6.逻辑运算符
AND 逻辑和
OR 逻辑或
NOT 逻辑非
原创
批处理语法纪实
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
评论交流
欢迎留下你的想法