我有这个功能 For /F 循环:
Setlocal EnableDelayedExpansion
for /F "tokens=*" %%A in (New.txt) do (
echo "%%A" | findstr /C:"[B]" 1>nul
if !errorlevel!==1 echo "%%A"
set line=%%A
if !errorlevel!==0 echo BOLD !line:[B]=!
)
它的作用是在文本文件中输入行,但如果遇到包含文本的行[B]
,它会添加BOLD
到行首。我正在寻找一种类似的方法,让它[S]
可以添加SUPER
到行首。我有这个:
Setlocal EnableDelayedExpansion
for /F "tokens=*" %%A in (New.txt) do (
echo "%%A" | findstr /C:"[B]" 1>nul
if !errorlevel!==1 echo "%%A" | findstr /C:"[S]" 1>nul & if %errorlevel%==1 echo "%%A" & if %errorlevel%==0 echo SUPER !line:[S]=!
set line=%%A
if !errorlevel!==0 echo "!line:[B]=!"
)
但由于运行方式的原因,它无法工作。
编辑:我无法用 break 或 goto 结束循环,因为有多行需要处理。
答案1
由于您已经在使用 DelayedExpansion,所以我会始终将当前行填充到变量中line
,并通过字符串替换检查是否line
包含标记。
@Echo off & Setlocal EnableDelayedExpansion
for /F "tokens=*" %%A in (New.txt) do (
set "line=%%A"
if "!line!" neq "!line:[B]=!" set "line=BOLD !line:[B]=!"
if "!line!" neq "!line:[S]=!" set "line=SUPER !line:[S]=!"
echo=!line!
)