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

时间:2011-09-10 02:03:43

标签: string file-io batch-file substring

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

@echo off
setlocal enableextensions enabledelayedexpansion

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

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

123
345
abckdla

abd
abd
abc

test
当for循环位于test.txt的第4行和第8行时,我可以打印“这是一个新行”

非常感谢你的时间。

1 个答案:

答案 0 :(得分: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
  )
)

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

2.- FOR命令跳过空白行。尝试HELP FOR并阅读“跳过空行”。 有一些复杂的解决方案涉及例如TYPEFIND我会尽量避免,除非有必要。