我搜索了很长时间,并没有找到对我的问题有用的东西。这可能听起来很简单,如果有人能帮助我,我会很高兴:
我想编写一个批处理脚本,它证明文本文件中的每个字符串是否包含特定的子字符串。如果是这种情况,则应打印出包含此子字符串的整个字符串。 我正在寻找的字符串被双引号括起来。
我的代码只适用于我的文本文件的所有行,但我需要它用于所有字符串。
提前thx!@echo off
setlocal enableextensions enabledelayedexpansion
for /f "delims=" %%A in ('findstr "somesubstring" "textfile.txt"') do (
echo %%A
)
答案 0 :(得分:2)
也许这就是你想要的?
@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文件可能会失败(未用引号括起来)是特殊的批处理字符。
答案 1 :(得分:1)
我首先会使用工具在一行上隔离每个字符串。然后,您可以使用FINDSTR仅返回包含子字符串
的引用行最棘手的部分是隔离引用的字符串。我的REPL.BAT regex search and replace utility是个不错的选择。它是一个混合的JScript /批处理脚本,可以在任何现代Windows机器上从XP开始本地运行。
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