BAT技巧
FOR使用
枚举input.txt里的每一行,执行call :dosth %%i(以换行符为分割,默认是空格)
for /f "delims=" %%i in (input.txt) do call :dosth %%i
从1到10步长为1,执行本文件,参数为%%i
for /l %%i in (1, 1, 10) do call %0 %%i
输出目录.的所有txt的文件名
dir /b ".\*.txt"
变量延迟
setlocal enabledelayedexpansion
set n=!n:%nn%=%on%!
setlocal disabledelayedexpansion
清空output.txt并输出一个空行
echo. >output.txt
附加123到output.txt的末尾
echo 123 >>output.txt
OI 对拍
@echo off
:1
Name_data>Name.in
Name_std<Name.in >Name.ans
Name<Name.in >Name.out
fc Name.out Name.ans
if %errorlevel%==0 goto 1
pause
二重循环基本格式
@echo off
for /l %%i in (1,1,100) do call :loop2 %%i
goto end
:loop2
echo loop2 %1
for /l %%i in (1,1,%1) do call :test %1 %%i
goto end
:test
echo %1 %2
:end
字符串替换(转载)(结合变量延迟使用)
@echo off
set aa=伟大的中国!我为你自豪
echo 替换前:%aa%
echo 替换后:%aa:中国=中华人民共和国%
echo aa = %aa%
set "aa=%aa:中国=中华人民共和国%"
echo aa = %aa%
pause
在当前目录下递归查找路径中带有%1的文件夹,附加到output.txt,错误信息不显示
dir /s /a:D /b find %1 >>output.txt 2>nul
显示当前时间(BAT的同目录下需有一个enter的文件,没有后缀,文件内容为一个空行)
time <enter