如何避免现有入站规则中的IP列表覆盖

时间:2017-02-17 07:49:47

标签: batch-file ip firewall

使用以下批处理脚本将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列。有没有办法更新,不会丢失旧列表。

1 个答案:

答案 0 :(得分:0)

@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 { {1}}档案。

因此,唯一要处理的行是新行,新值将附加到installedips.txt文件。

(未经测试)