我有下面的頭一個批處理文件:批處理文件 - 如何使用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