批处理文件,检查字符串是否包含具有特殊字符的其他字符

时间:2014-07-15 09:04:28

标签: windows batch-file

我正在尝试编写一个批处理文件,将一些项目附加到代理例外列表中。

我现在有这个: -

echo off
setlocal

for /f "tokens=2*" %%a in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyOverride') do set "var=%%b"

set "devlocal=;*.dev.local;"
set "local=*.local;"

set "exceptions=%var%%devlocal%%local%"

echo "%exceptions%"

pause

reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyOverride /t REG_SZ /d "%exceptions%" /f

pause

这样运行正常。但我想要做的是首先检查异常中是否已存在*.dev.local,如果是,请不要将其添加。*.local也是如此。

我似乎无法使用FINDSTR,因为它会支持*等特殊字符。

2 个答案:

答案 0 :(得分:1)

这是添加条款的一种方法,如果它们不存在的话 它没有效率,但对于两个术语,它将正常工作。

echo "%var%"|findstr /L /i "*.dev.local" >nul || set "var=%var%;*.dev.local;"
echo "%var%"|findstr /L /i "*.local"     >nul || set "var=%var%;*.local"

答案 1 :(得分:0)

你可以用空字符串替换字符串:

echo off
setlocal

for /f "tokens=2*" %%a in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyOverride') do set "var=%%b"

set "devlocal=;*.dev.local;"
set "local=*.local;"

REM SET %v:str1=str2% returns the value of variable v in which all occurrences of str1 are replaced by str2
REM Note that we use an empty string in place of str2
SET var=%var:;*.dev.local;=%
SET var=%var:*.local;=%

set "exceptions=%var%%devlocal%%local%"

echo "%exceptions%"

pause

reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyOverride /t REG_SZ /d "%exceptions%" /f

pause