0

我想为我制作一个小批处理脚本,它可以帮助我尽可能限制地跟踪和监视我的计算机。我使用 TinyWall 作为我的主要防火墙,因为它非常轻巧简单。通过它的“显示连接”功能,我想到我可以停止持续允许特定的端口/程序,只在我真正需要的时候打开它们。

所以我写了(经过大量研究)一个批处理脚本,它将添加防火墙异常(打开几个端口),打开特定的程序。之后,如果程序的进程正在运行,我使用 if 语句不断(在批处理脚本运行时)在任务列表中查找。如果没有,则应删除防火墙例外并关闭程序。

当我运行脚本(使用“cmd.exe /k”)时,程序打开,但似乎异常不适用,因为程序报告没有 Internet 连接。程序打开后,cmd 窗口也会立即关闭(没有“cmd.exe /k”)。我不希望这种情况发生。

我也觉得奇怪的是(使用 cmd 的 /k 参数)我只得到响应“语法错误”。(从我的语言翻译,不知道它最初报告的内容)没有任何进一步的信息。

我需要在管理 cmd 窗口中运行脚本。有没有办法利用它?它在我使用“advfirewall”(我猜是高级防火墙)命令之前有效,但是一些命令手册的帮助告诉我,普通的“firewall”命令已经过时,我应该使用“advfirewall firewall”。

有人知道我如何实现我的目标吗?我将不胜感激。

PS:对不起,很长的文字。

TLDR:我的脚本不起作用。如果您想帮助我,请查看代码。

@echo OFF
SETLOCAL
echo Adding Firewall Exceptions for Origin ...
netsh advfirewall firewall add rule name="OriginIn port 3216" dir=in protocol=TCP localport=3216 action=allow
netsh advfirewall firewall add rule name="OriginOut port 3216" dir=out protocol=TCP localport=3216 action=allow
netsh advfirewall firewall add rule name="OriginIn port 49218" dir=in protocol=TCP localport=49218 action=allow
netsh advfirewall firewall add rule name="OriginOut port 49218" dir=out protocol=TCP localport=49218 action=allow
netsh advfirewall firewall add rule name="OriginIn port 49819" dir=in protocol=TCP localport=49819 action=allow
netsh advfirewall firewall add rule name="OriginOut port 49819" dir=out protocol=TCP localport=49819 action=allow
timeout 2
echo Done. Starting Origin. Have fun gaming!
start "Origin" /DE:\Origin\ Origin.exe
tasklist /FI "IMAGENAME eq Origin.exe" 2>NUL | find /I /N "Origin.exe">NUL
if %ERRORLEVEL% GTR 0
(
    netsh advfirewall firewall delete rule name "OriginIn port 3216"
    netsh advfirewall firewall delete rule name "OriginOut port 3216"
    netsh advfirewall firewall delete rule name "OriginIn port 49218"
    netsh advfirewall firewall delete rule name "OriginOut port 49218"
    netsh advfirewall firewall delete rule name "OriginIn port 49819"
    netsh advfirewall firewall delete rule name "OriginOut port 49819"
)
echo Deleting Firewall Exceptions (Reason: Origin isn't running anymore) ...
timeout 5
exit
4

1 回答 1

0
start "Origin" /DE:\Origin\ Origin.exe

仅猜测: 的帮助表示在和start之间应该有一个空格。DE

于 2013-07-27T00:16:28.670 回答