Windows批处理文件 - findstr通过变量查找包含百分号字符和单引号的字符串

问题描述:

在windows批处理文件中,我检查输入文本文件的内容 - 让我们说一行文本文件(test。 TXT)含有这样的文字:Windows批处理文件 - findstr通过变量查找包含百分号字符和单引号的字符串

"bla //ID_SCEN='%3' blabla" 

一个这些检查包括寻找一个与FINDSTR行一个特定的字符串(// ID_SCEN = '%3')。测试代码如下(test.bat)。

@echo off 
set myLine= 
( 
set /p myLine= 
)<%1 
echo Just found the following line in the input file: 
echo %myLine% 
echo %myLine% | findstr /C:"//ID_SCEN=^'%%3^'" 1>nul 
if errorlevel 1 (
     echo The line %myLine% does not contain //ID_SCEN='%%3' 
     echo Too bad, it is compulsory ... I quit 
     GOTO:EOF 
) else (
    echo Found expected stuff 
) 

对于test.bat的test.txt的现在输出的是:

Just found the following line in the input file: 
"bla //ID_SCEN='%3' blabla" 
The line "bla //ID_SCEN='%3' blabla" does not contain //ID_SCEN='%3' 
Too bad, it is compulsory ... I quit 

有人能帮忙吗?它可能有做的转义字符 - 试图基于论坛的帖子各种事情,但没有成功尚未...

接受的答案:

更换^逃逸中搜索字符串单引号: "//ID_SCEN=^'%%3^'""//ID_SCEN='%%3'" ......它的工作

最佳

+0

在你的'FINDSTR'调用中,有一个错字:“ID_SCCEN”而不是“ID_SCEN” – zb226

+0

谢谢 - '更正了帖子,但仍然无法正常工作... –

单引号不需要FINDSTR逃跑。更改...

echo %myLine% | findstr /C:"//ID_SCEN=^'%%3^'" 1>nul 

...到...

echo %myLine% | findstr /C:"//ID_SCEN='%%3'" 1>nul 

...和它的作品。

但是,请注意FINDSTR本身是一团糟。它包含许多奇怪的边缘案例和无证行为。看看dbenhamexhaustive investigation on the matter :)