BAT技巧

时间:2024-05-14 11:05:20

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