我正在尝试编写一个批处理文件,将一些项目附加到代理例外列表中。
我现在有这个: -
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
,因为它会支持*
等特殊字符。
答案 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