如何避免在现有入站规则中覆盖 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 文件。

(未测试)