【问题标题】:Batch Script Comparison批处理脚本比较
【发布时间】:2014-08-19 01:17:56
【问题描述】:

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

@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....

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

【问题讨论】:

  • 请编辑您的问题以便更好地解释。 :processline 是什么?什么是“失败” - :processline 或 findstr?这条线看起来应该匹配什么?确保清楚地显示有效的代码示例和无效的示例。

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


【解决方案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. 由于包含空格字符,整个搜索字符串本身必须用双引号引起来。

我使用了微软的Findstr的文档和输入findstr /?后在命令提示符窗口中的这个命令输出的帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-07
    • 2013-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多