String 检查textfile中每个字符串的子字符串

String 检查textfile中每个字符串的子字符串,string,batch-file,substring,pattern-finding,String,Batch File,Substring,Pattern Finding,我搜索了很长时间,没有找到对我的问题有用的东西。这听起来可能很简单,如果有人能帮助我,我将非常高兴: 我想编写一个批处理脚本,用于证明文本文件中的每个字符串是否包含特定的子字符串。如果是这种情况,则应打印包含此子字符串的整个字符串。 我正在寻找的字符串被双引号包围 我的代码只适用于文本文件的所有行,但我需要它适用于所有字符串 提前谢谢 @echo off setlocal enableextensions enabledelayedexpansion for /f "delims=" %

我搜索了很长时间,没有找到对我的问题有用的东西。这听起来可能很简单,如果有人能帮助我,我将非常高兴:

我想编写一个批处理脚本,用于证明文本文件中的每个字符串是否包含特定的子字符串。如果是这种情况,则应打印包含此子字符串的整个字符串。 我正在寻找的字符串被双引号包围

我的代码只适用于文本文件的所有行,但我需要它适用于所有字符串

提前谢谢

@echo off
setlocal enableextensions enabledelayedexpansion
    for /f "delims=" %%A in ('findstr "somesubstring" "textfile.txt"') do (
        echo %%A 
    )

也许这就是你想要的

@echo off
setlocal enabledelayedexpansion

set "substring=somesubstring"
for /f "delims=" %%A in ('findstr "%substring%" "textfile.txt"') do (
   for %%B in (%%A) do (
      set "string=%%~B"
      if "!string:%substring%=!" neq "!string!" echo %%B
   )
)

如果“字符串”(未括在引号中)之外的字符是特殊的批处理字符,则此Bath文件可能会失败。

我将首先使用工具在一行上隔离每个字符串。然后可以使用FINDSTR只返回包含子字符串的带引号的行

最棘手的部分是隔离带引号的字符串。我的建议是个不错的选择。它是一个混合JScript/批处理脚本,从XP开始,它将在任何现代Windows机器上本机运行

type "textfile.txt" | repl (\q.*?\q) \r\n$1\r\n x | findstr /x ^"\".*substring.*\"^"
如果要查看不带引号的字符串,请执行以下操作:

for /f delims^=^ eol^= %%A in (
  'type "textfile.txt" ^| repl (\q.*?\q) \r\n$1\r\n x ^| findstr /x ^"\".*substring.*\"^"'
) do echo %%~A

听起来像是一个简单的
grep
命令-检查字符串是否可以跨多行?@dbenham:不,字符串只是一行的一部分nirmh:thx,这看起来很有用,但我需要通过批处理脚本自动生成这样一个字符串列表。请说明您对“字符串”的理解。“字符串”是否用双引号括起来?“字符串”之外的字符呢?发布文件示例和所需结果。请编辑您的问题,不要在此处以评论的形式发布其他信息。请尝试您的代码,但它不提供仅字符串,我希望-我仍能获得整行内容。但是我想我必须用另一种方式来处理这个问题——但是谢谢你的回答@比安科内罗-有一个简单的错误-它应该在最后读
echo%%B
,然后你应该得到你的结果。@dbenham:我的错误(啊!)谢谢<代码>:-)