注意:必须保存为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”
例子2:
讲上面的test.bat修改为
ping %1
ping %2
效果:
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
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则只会显示文件名