注意:必须保存为ASCII码格式,文件名也不能包含中文

基本命令:

@echo off

echo的意思是回旋,这里的意思就是回显,echo off意思就是关闭回显.前面的@表示echooff 这一行也不会回显你可以试着去掉@和整行去掉.@的另一个功能是在执行完批处理文件时自动恢复命令回显。

测试:

@echo off

ipconfig

pause

暂停批处理程序的执行并显示一条消息,提示用户按任意键继续执行。

rem

注释指令

call

调用指令

例子1:

写一个test.bat,放在C盘

@echo off

echo %1 –这里%1是输入的参数,echo是输出显示

然后打开cmd,输入call C:\test.bat “dingxiaowei”,会显示”dingxiaowei”

windows批处理_批处理


例子2:

讲上面的test.bat修改为

ping %1

ping %2

效果:

windows批处理_文件名_02


if

判断指令

三种方式:

IF [NOT]string1==string2 command

IF [NOT]EXIST filename command

IF [NOT]ERRORLEVEL number command

例子1:

@echo off

if %1 == 1 echo “a = 1”

例子2:

检测是否存在文件

@echo off

if existe:1.txt echo “exist 1.txt”

goto

跳转执行指令

@echo off

net user

if %ERRORLEVEL% == 0 goto successed

if %ERRORLEVEL% == 1 goto failed

:successed

echo netuser 执行成功!

goto return

:failed

echo netuser 执行失败!

:return

windows批处理_文件名_03


set

设置命令

FOR 参数 %%变量名 IN (相关文件或命令) DO 执行的命令

参数:FOR有4个参数 /d /l /r /f

例子:

set protogen=”%~dp0….\Tools\release\protobuf\protogx\protogx.exe”

%~dp0\表示当前路径

/d 仅为目录
@echo off
for /d %%i in (*) do @echo %%i
pause
把他保存放在C盘根目录执行,就会把C盘目录下的全部目录名字打印出来
@echo off
for /d %%i in (???) do @echo %%i
pause
当前目录下有目录名字只有1-3个字母的,就会显示出来,没有就不显示
echo off
for /d %%i in (e:*) do echo %%i
该命令只扫描当前目录的子目录名称,不会扫瞄子目录中所包含的子目录名称

/r 递归
@echo off
for /r c:\ %%i in (*.exe) do @echo %%i
pause
搜索出全部的exe文件
For /r c:\%%i in (.) do echo %%i
扫描出当前目录下所有子目录的名称,会递归遍历

/f 用于遍历文件
for /f %%i in (a.txt) do echo %%i
会读出a.txt的内容,如果没有/f则只会显示文件名