批处理脚本比较

时间:2014-06-27 20:16:23

标签: shell batch-file command-line-arguments

我正在使用批处理脚本进行比较,我可以搜索字符串并成功说明它是否存在,但是当我的字符串有两个部分时我遇到了麻烦:请参阅下面的代码,

@ECHO off

SET key0="First Number"="1000"

SET key1="First Number"
SET key2==
SET key3="1000"

SET key4=%key1%%key2%%key3%

FOR /f "tokens=*" %%a in (FILE.TXT) do call :processline %%a

findstr /X %key4% FILE.txt
if %errorlevel%==0 (

ECHO Key Exists
) ELSE (
ECHO NO
)
PAUSE
goto :eof

如果我搜索key0或key4,我得到的结果为NO。但是,如果我搜索key1,key2或key3,我会获得Key Exists ....

关于我如何在引号中搜索包含两个单独单词的字符串的任何想法?

1 个答案:

答案 0 :(得分:1)

一个有效的解决方案是:

@ECHO off

SET key0=\"First Number\"=\"1000\"

SET key1=\"First Number\"
SET key2==
SET key3=\"1000\"

SET key4=%key1%%key2%%key3%

findstr /X /C:"%key4%" FILE.TXT
if %errorlevel%==0 (
   ECHO Key Exists
) ELSE (
   ECHO NO
)
PAUSE
  1. 必须使用反斜杠转义搜索字符串中的每个双引号。
  2. 选项/C:必须用于文字字符串搜索,而不是正则表达式搜索。
  3. 由于包含空格字符,整个搜索字符串本身必须是双引号。
  4. 我使用了Microsoft的Findstr文档,并在输入findstr /?

    后在命令提示符窗口输出了此命令输出的帮助