如何避免在现有入站规则中覆盖 IP 列表
How to avoid IP list overriding in existing inbound rule
如何在使用以下批处理脚本将 IP 添加到现有入站规则时避免 IP 列表被覆盖。
ipadd.bat:
@echo off
for /f "tokens=*" %%a in (ips.txt) do (
echo line=%%a
netsh advfirewall firewall set rule name="Testrule" dir=in protocol=any new remoteip=%%a
)
ips.txt
用换行符列出的 IP(每个换行)
现在,每次我向 ips.txt 添加新 IP 时,规则都会更新为新 IP,但旧 IP 列表会被新 IP 集覆盖。有没有办法更新而不丢失旧列表。
@echo OFF
IF NOT EXIST installedips.txt >installedips.txt ECHO @
for /f "tokens=*" %%a in (
'findstr /x /v /i /L /g:installedips.txt "ips.txt" '
) do (
echo line=%%a
>>installedips.txt echo %%a
netsh advfirewall firewall set rule name="Testrule" dir=in protocol=any new remoteip=%%a
)
GOTO :EOF
这应该满足要求。
在 installedips.txt
中保留已安装 ips 的日志 - 如果该文件不存在,则使用虚拟值创建该文件。
然后处理文件的每一行,/v
排除 /x
完全匹配的行 /i
不管大小写 /L
按字面意思 /g:
上的任何行installedips.txt
文件。
因此,唯一要处理的行是新行,新值将附加到 installedips.txt
文件。
(未测试)
如何在使用以下批处理脚本将 IP 添加到现有入站规则时避免 IP 列表被覆盖。
ipadd.bat:
@echo off
for /f "tokens=*" %%a in (ips.txt) do (
echo line=%%a
netsh advfirewall firewall set rule name="Testrule" dir=in protocol=any new remoteip=%%a
)
ips.txt
用换行符列出的 IP(每个换行)
现在,每次我向 ips.txt 添加新 IP 时,规则都会更新为新 IP,但旧 IP 列表会被新 IP 集覆盖。有没有办法更新而不丢失旧列表。
@echo OFF
IF NOT EXIST installedips.txt >installedips.txt ECHO @
for /f "tokens=*" %%a in (
'findstr /x /v /i /L /g:installedips.txt "ips.txt" '
) do (
echo line=%%a
>>installedips.txt echo %%a
netsh advfirewall firewall set rule name="Testrule" dir=in protocol=any new remoteip=%%a
)
GOTO :EOF
这应该满足要求。
在 installedips.txt
中保留已安装 ips 的日志 - 如果该文件不存在,则使用虚拟值创建该文件。
然后处理文件的每一行,/v
排除 /x
完全匹配的行 /i
不管大小写 /L
按字面意思 /g:
上的任何行installedips.txt
文件。
因此,唯一要处理的行是新行,新值将附加到 installedips.txt
文件。
(未测试)