if 标准格式
- IF [NOT] ERRORLEVEL number command
- IF [NOT] string1==string2 command string是数字时,会以数字比较
- IF [NOT] EXIST filename command
()处理命令,后面的else才有效
echo hello
REM one
IF %ERRORLEVEL%==0 (
echo one
) ELSE (
echo two
)
REM two
IF %ERRORLEVEL%==0 (echo one) ELSE echo two
for 标准格式
FOR %variable IN (set) DO command [command-parameters]
bat脚本中则使用%%variable
- 文件处理
eol=; 则;开头的忽略,视为注释
tokens=1,3* 跳过第二个数据,*代表后面都设置了值,若去掉,只显示1,3表示的数据
%%a 代表变量从a开始计数
FOR /F "eol=; tokens=1,3*" %%a IN (test.txt test1.txt) DO echo %%a %%b %%c
REM 文件名若用"",则需要加usebackq
FOR /F "usebackq eol=; tokens=1,3*" %%a IN ("test hh.txt") DO echo %%a %%b %%c
- 变量处理
FOR /L %variable IN (start,step,end) DO command [command-parameters]
可增可减
FOR /L %%i IN (1, 1, 5) DO echo %%i
FOR /L %%i IN (5, -1, 1) DO echo %%i
- 当前目录,递归查找数据
REM 只遍历当前目录
FOR /D %%i in (c:/*) DO echo %%i
REM 递归某路径下,查找某数据【例如 *.exe】
FOR /R D:/ %%i in (*.exe) DO echo %%i
- 批量改名
setlocal EnableDelayedExpansion
FOR /R %%i IN (*) DO (
REM 是否有后缀
if "%%~xi"==".txt" (
REM 不带后缀的文件名
set prefixName=%%~ni
rename %%i !prefixName!
) else (
echo "world"
)
)