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	逻辑非