我有下面的头一个批处理文件:批处理文件 - 如何使用FINDSTR有百分之
@Echo off
SETLOCAL EnableDelayedExpansion EnableExtensions
在一个If
声明,圆括号()
,我有以下代码:
Echo SOME_VAR|FindStr /r /C:"^.*SOME.*$"
Echo Error: !errorlevel!
Echo %%SOME_VAR%%|FindStr /r /C:"^.*SOME.*$"
Echo Error: !errorlevel!
这将打印:
SOME_VAR
Error: 0
Error: 1
如果SOME_VAR是现有的ENV铁器变数,这就是我得到的。如果我删除变量,我会获得预期的成功。
这里会发生什么?我需要更多地逃避什么吗?如果变量存在,我怎样才能在第二个找到成功的发现?我只对搜索文本包含%
字符并恰好匹配现有变量名称进行文本搜索感兴趣。
顺便说一下,比较的来源最终也会是一个变量,其中我已经从Windows注册表中读取PATH。所以最终,我搜索的字符串将成为/C:"^.%%SOME_VAR%%;.*$"
我的PATH变量是这样的:
%SOME_VAR%;C:\Windows\system32...................etc
谢谢,这是一个非常清晰的解释和它的工作原理... 但是我怎样才能做到这一点,当它是一个变量我呼应,与一个值如%SOME_VAR%;'。我无法构建我正在搜索的字符串并为其添加插入符号。 – jeremfg
@jeremfg - 查看我更新的答案。 – dbenham
哇......我很惊讶你在这有多好!非常感谢! – jeremfg