批处理:确定从文件读取的行中是否存在子字符串

Sol*_*lti 1 string file-io substring batch-file

我是批量新手.我的目的是编写一个读取文件中每一行的批处理,并依赖于读取的行执行一些不同的任务.这是一些样本

@echo off
setlocal enableextensions enabledelayedexpansion

for /f "usebackq delims=" %%a in (test.txt) do ( 
  echo %%a
  *if %%a contains abc do (other tasks)*           
)
Run Code Online (Sandbox Code Playgroud)

另外,我可以批量检测"换行符"吗?如果test.txt看起来像:

123
345
abckdla

abd
abd
abc

test
Run Code Online (Sandbox Code Playgroud)

当for循环在test.txt的row4和row8时,我可以打印"这是一个新行吗?"

非常感谢你的时间.

PA.*_*PA. 6

您的帖子中有两个问题

1.-检查变量是否包含子字符串.

试试这个

@echo off
setlocal enableextensions enabledelayedexpansion
for /f "tokens=*" %%a in (test.txt) do ( 
  set tst=%%a
  set tst=!tst:ab=!
  if not !tst!==%%a ( 
    echo %%a contains ab
  ) else (
    echo %%a does not contain ab
  )
)
Run Code Online (Sandbox Code Playgroud)

HELP SET有关详细信息,请参阅.

2.- FOR命令跳过空白行.请尝试HELP FOR阅读"跳过空行".例如TYPE,涉及复杂的解决方案,FIND除非严格必要,否则我会尽量避免.