序
看到一个关闭端口的批处理文件,整理了一下。
让关闭端口的操作更容易维护,交互性更好些。
我自己的计算机是Win10X64, 只在这个环境下做了测试.比原版好用:)
在当下,有个好用的关端口的脚本还是有点意义。
在xp虚拟机下也整理了一个开关端口的脚本。
关闭端口的脚本-win10
@echo off
rem @filename win10_disable_port.bat
title close unused port, test on win10X64
color 89
rem --> Check for permissions
IF "%PROCESSOR_ARCHITECTURE%" EQU "amd64" (
>nul 2>&1 "%SYSTEMROOT%\SysWOW64\cacls.exe" "%SYSTEMROOT%\SysWOW64\config\system"
) ELSE (
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
)
rem --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
echo Requesting administrative privileges...
goto L_RUN_AS_ADMIN
) else (
echo was admin now :^)
goto L_WAS_ADMIN_NOW
)
:L_RUN_AS_ADMIN
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\run_as_admin.vbs"
set params = %*:"=""
rem %~s0 is this file e.g. C:\Users\ADMINI~1\DOCUME~1\win10_disable_port.BAT
echo UAC.ShellExecute "cmd.exe", "/c ""%~s0"" %params%", "", "runas", 1 >> "%temp%\run_as_admin.vbs"
call "%temp%\run_as_admin.vbs"
del "%temp%\run_as_admin.vbs"
exit /B
rem run_as_admin.vbs
rem Set UAC = CreateObject("Shell.Application")
rem UAC.ShellExecute "cmd.exe", "/c ""C:\Users\ADMINI~1\DOCUME~1\x.BAT"" ", "", "runas", 1
:L_WAS_ADMIN_NOW
rem %CD% is this file's dir tail not '\', e.g. d:\tmp
rem %~dp0 is this file's dir tail is '\', e.g. d:\tmp\
pushd "%CD%"
CD /D "%~dp0"
echo start firewall...
sc config SharedAccess start= auto > nul
net start SharedAccess > nul
rem make a bat to close given port
rem close_port_as_admin.bat action port protocol in|out
rem %1 is action
rem %2 is port
rem %3 is protocol
rem %4 is dir
set bat_to_close_one_port="%temp%\close_port_as_admin.bat"
if '%1' EQU 'allow' (
set action_desc=enable
) else (
set action_desc=disable
)
set LINE_80=================================================================================
echo echo %LINE_80% > %bat_to_close_one_port%
echo echo %action_desc% port %%2 %%3 %%4... >> %bat_to_close_one_port%
rem delete firewall rule by name
echo netsh advfirewall firewall delete rule name=%action_desc%_%%2_%%3_%%4 ^> nul >> %bat_to_close_one_port%
echo netsh advfirewall firewall add rule name=%action_desc%_%%2_%%3_%%4 action=%%1 localport=%%2 protocol=%%3 dir=%%4 ^> nul >> %bat_to_close_one_port%
echo if '%%errorlevel%%' EQU '0' ^( >> %bat_to_close_one_port%
echo echo ok : disable port %%2 %%3 %%4 >> %bat_to_close_one_port%
echo ^) else ^( >> %bat_to_close_one_port%
echo echo failed : disable port %%2 %%3 %%4 >> %bat_to_close_one_port%
echo echo when disable port, have error happen, press any key to continue >> %bat_to_close_one_port%
echo ^pause ^> nul >> %bat_to_close_one_port%
echo ^) >> %bat_to_close_one_port%
echo echo %LINE_80% >> %bat_to_close_one_port%
rem show the firewall rules by add, if name=all, show all firewall rules
echo netsh advfirewall firewall show rule name=%action_desc%_%%2_%%3_%%4 >> %bat_to_close_one_port%
call %bat_to_close_one_port% block 135 tcp in
call %bat_to_close_one_port% block 135 tcp out
call %bat_to_close_one_port% block 135 udp in
call %bat_to_close_one_port% block 135 udp out
call %bat_to_close_one_port% block 137 tcp in
call %bat_to_close_one_port% block 137 tcp out
call %bat_to_close_one_port% block 137 udp in
call %bat_to_close_one_port% block 137 udp out
call %bat_to_close_one_port% block 138 tcp in
call %bat_to_close_one_port% block 138 tcp out
call %bat_to_close_one_port% block 138 udp in
call %bat_to_close_one_port% block 138 udp out
call %bat_to_close_one_port% block 139 tcp in
call %bat_to_close_one_port% block 139 tcp out
call %bat_to_close_one_port% block 139 udp in
call %bat_to_close_one_port% block 139 udp out
call %bat_to_close_one_port% block 445 tcp in
call %bat_to_close_one_port% block 445 tcp out
call %bat_to_close_one_port% block 445 udp in
call %bat_to_close_one_port% block 445 udp out
call %bat_to_close_one_port% block 593 tcp in
call %bat_to_close_one_port% block 593 tcp out
call %bat_to_close_one_port% block 593 udp in
call %bat_to_close_one_port% block 593 udp out
call %bat_to_close_one_port% block 1024 tcp in
call %bat_to_close_one_port% block 1024 tcp out
call %bat_to_close_one_port% block 1024 udp in
call %bat_to_close_one_port% block 1024 udp out
call %bat_to_close_one_port% block 3389 tcp in
call %bat_to_close_one_port% block 3389 tcp out
call %bat_to_close_one_port% block 3389 udp in
call %bat_to_close_one_port% block 3389 udp out
del %bat_to_close_one_port%
echo task over, press any key to quit :)
pause > nul
运行效果
was admin now :)
start firewall...
请求的服务已经启动。
请键入 NET HELPMSG 2182 以获得更多的帮助。
================================================================================
disable port 135 tcp in...
ok : disable port 135 tcp in
================================================================================
规则名称: disable_135_tcp_in
----------------------------------------------------------------------
已启用: 是
方向: 入
配置文件: 域,专用,公用
分组:
本地 IP: 任何
远程 IP: 任何
协议: TCP
本地端口: 135
远程端口: 任何
边缘遍历: 否
操作: 阻止
确定。
================================================================================
disable port 135 tcp out...
ok : disable port 135 tcp out
================================================================================
规则名称: disable_135_tcp_out
----------------------------------------------------------------------
已启用: 是
方向: 出
配置文件: 域,专用,公用
分组:
本地 IP: 任何
远程 IP: 任何
协议: TCP
本地端口: 135
远程端口: 任何
边缘遍历: 否
操作: 阻止
确定。
================================================================================
disable port 135 udp in...
ok : disable port 135 udp in
================================================================================
规则名称: disable_135_udp_in
----------------------------------------------------------------------
已启用: 是
方向: 入
配置文件: 域,专用,公用
分组:
本地 IP: 任何
远程 IP: 任何
协议: UDP
本地端口: 135
远程端口: 任何
边缘遍历: 否
操作: 阻止
确定。
================================================================================
disable port 135 udp out...
ok : disable port 135 udp out
================================================================================
规则名称: disable_135_udp_out
----------------------------------------------------------------------
已启用: 是
方向: 出
配置文件: 域,专用,公用
分组:
本地 IP: 任何
远程 IP: 任何
协议: UDP
本地端口: 135
远程端口: 任何
边缘遍历: 否
操作: 阻止
确定。
================================================================================
disable port 137 tcp in...
ok : disable port 137 tcp in
================================================================================
规则名称: disable_137_tcp_in
----------------------------------------------------------------------
已启用: 是
方向: 入
配置文件: 域,专用,公用
分组:
本地 IP: 任何
远程 IP: 任何
协议: TCP
本地端口: 137
远程端口: 任何
边缘遍历: 否
操作: 阻止
确定。
================================================================================
disable port 137 tcp out...
ok : disable port 137 tcp out
================================================================================
规则名称: disable_137_tcp_out
----------------------------------------------------------------------
已启用: 是
方向: 出
配置文件: 域,专用,公用
分组:
本地 IP: 任何
远程 IP: 任何
协议: TCP
本地端口: 137
远程端口: 任何
边缘遍历: 否
操作: 阻止
确定。
================================================================================
disable port 137 udp in...
ok : disable port 137 udp in
================================================================================
规则名称: disable_137_udp_in
----------------------------------------------------------------------
已启用: 是
方向: 入
配置文件: 域,专用,公用
分组:
本地 IP: 任何
远程 IP: 任何
协议: UDP
本地端口: 137
远程端口: 任何
边缘遍历: 否
操作: 阻止
确定。
================================================================================
disable port 137 udp out...
ok : disable port 137 udp out
================================================================================
规则名称: disable_137_udp_out
----------------------------------------------------------------------
已启用: 是
方向: 出
配置文件: 域,专用,公用
分组:
本地 IP: 任何
远程 IP: 任何
协议: UDP
本地端口: 137
远程端口: 任何
边缘遍历: 否
操作: 阻止
确定。
================================================================================
disable port 138 tcp in...
ok : disable port 138 tcp in
================================================================================
规则名称: disable_138_tcp_in
----------------------------------------------------------------------
已启用: 是
方向: 入
配置文件: 域,专用,公用
分组:
本地 IP: 任何
远程 IP: 任何
协议: TCP
本地端口: 138
远程端口: 任何
边缘遍历: 否
操作: 阻止
确定。
================================================================================
disable port 138 tcp out...
ok : disable port 138 tcp out
================================================================================
规则名称: disable_138_tcp_out
----------------------------------------------------------------------
已启用: 是
方向: 出
配置文件: 域,专用,公用
分组:
本地 IP: 任何
远程 IP: 任何
协议: TCP
本地端口: 138
远程端口: 任何
边缘遍历: 否
操作: 阻止
确定。
================================================================================
disable port 138 udp in...
ok : disable port 138 udp in
================================================================================
规则名称: disable_138_udp_in
----------------------------------------------------------------------
已启用: 是
方向: 入
配置文件: 域,专用,公用
分组:
本地 IP: 任何
远程 IP: 任何
协议: UDP
本地端口: 138
远程端口: 任何
边缘遍历: 否
操作: 阻止
确定。
================================================================================
disable port 138 udp out...
ok : disable port 138 udp out
================================================================================
规则名称: disable_138_udp_out
----------------------------------------------------------------------
已启用: 是
方向: 出
配置文件: 域,专用,公用
分组:
本地 IP: 任何
远程 IP: 任何
协议: UDP
本地端口: 138
远程端口: 任何
边缘遍历: 否
操作: 阻止
确定。
================================================================================
disable port 139 tcp in...
ok : disable port 139 tcp in
================================================================================
规则名称: disable_139_tcp_in
----------------------------------------------------------------------
已启用: 是
方向: 入
配置文件: 域,专用,公用
分组:
本地 IP: 任何
远程 IP: 任何
协议: TCP
本地端口: 139
远程端口: 任何
边缘遍历: 否
操作: 阻止
确定。
================================================================================
disable port 139 tcp out...
ok : disable port 139 tcp out
================================================================================
规则名称: disable_139_tcp_out
----------------------------------------------------------------------
已启用: 是
方向: 出
配置文件: 域,专用,公用
分组:
本地 IP: 任何
远程 IP: 任何
协议: TCP
本地端口: 139
远程端口: 任何
边缘遍历: 否
操作: 阻止
确定。
================================================================================
disable port 139 udp in...
ok : disable port 139 udp in
================================================================================
规则名称: disable_139_udp_in
----------------------------------------------------------------------
已启用: 是
方向: 入
配置文件: 域,专用,公用
分组:
本地 IP: 任何
远程 IP: 任何
协议: UDP
本地端口: 139
远程端口: 任何
边缘遍历: 否
操作: 阻止
确定。
================================================================================
disable port 139 udp out...
ok : disable port 139 udp out
================================================================================
规则名称: disable_139_udp_out
----------------------------------------------------------------------
已启用: 是
方向: 出
配置文件: 域,专用,公用
分组:
本地 IP: 任何
远程 IP: 任何
协议: UDP
本地端口: 139
远程端口: 任何
边缘遍历: 否
操作: 阻止
确定。
================================================================================
disable port 445 tcp in...
ok : disable port 445 tcp in
================================================================================
规则名称: disable_445_tcp_in
----------------------------------------------------------------------
已启用: 是
方向: 入
配置文件: 域,专用,公用
分组:
本地 IP: 任何
远程 IP: 任何
协议: TCP
本地端口: 445
远程端口: 任何
边缘遍历: 否
操作: 阻止
确定。
================================================================================
disable port 445 tcp out...
ok : disable port 445 tcp out
================================================================================
规则名称: disable_445_tcp_out
----------------------------------------------------------------------
已启用: 是
方向: 出
配置文件: 域,专用,公用
分组:
本地 IP: 任何
远程 IP: 任何
协议: TCP
本地端口: 445
远程端口: 任何
边缘遍历: 否
操作: 阻止
确定。
================================================================================
disable port 445 udp in...
ok : disable port 445 udp in
================================================================================
规则名称: disable_445_udp_in
----------------------------------------------------------------------
已启用: 是
方向: 入
配置文件: 域,专用,公用
分组:
本地 IP: 任何
远程 IP: 任何
协议: UDP
本地端口: 445
远程端口: 任何
边缘遍历: 否
操作: 阻止
确定。
================================================================================
disable port 445 udp out...
ok : disable port 445 udp out
================================================================================
规则名称: disable_445_udp_out
----------------------------------------------------------------------
已启用: 是
方向: 出
配置文件: 域,专用,公用
分组:
本地 IP: 任何
远程 IP: 任何
协议: UDP
本地端口: 445
远程端口: 任何
边缘遍历: 否
操作: 阻止
确定。
================================================================================
disable port 593 tcp in...
ok : disable port 593 tcp in
================================================================================
规则名称: disable_593_tcp_in
----------------------------------------------------------------------
已启用: 是
方向: 入
配置文件: 域,专用,公用
分组:
本地 IP: 任何
远程 IP: 任何
协议: TCP
本地端口: 593
远程端口: 任何
边缘遍历: 否
操作: 阻止
确定。
================================================================================
disable port 593 tcp out...
ok : disable port 593 tcp out
================================================================================
规则名称: disable_593_tcp_out
----------------------------------------------------------------------
已启用: 是
方向: 出
配置文件: 域,专用,公用
分组:
本地 IP: 任何
远程 IP: 任何
协议: TCP
本地端口: 593
远程端口: 任何
边缘遍历: 否
操作: 阻止
确定。
================================================================================
disable port 593 udp in...
ok : disable port 593 udp in
================================================================================
规则名称: disable_593_udp_in
----------------------------------------------------------------------
已启用: 是
方向: 入
配置文件: 域,专用,公用
分组:
本地 IP: 任何
远程 IP: 任何
协议: UDP
本地端口: 593
远程端口: 任何
边缘遍历: 否
操作: 阻止
确定。
================================================================================
disable port 593 udp out...
ok : disable port 593 udp out
================================================================================
规则名称: disable_593_udp_out
----------------------------------------------------------------------
已启用: 是
方向: 出
配置文件: 域,专用,公用
分组:
本地 IP: 任何
远程 IP: 任何
协议: UDP
本地端口: 593
远程端口: 任何
边缘遍历: 否
操作: 阻止
确定。
================================================================================
disable port 1024 tcp in...
ok : disable port 1024 tcp in
================================================================================
规则名称: disable_1024_tcp_in
----------------------------------------------------------------------
已启用: 是
方向: 入
配置文件: 域,专用,公用
分组:
本地 IP: 任何
远程 IP: 任何
协议: TCP
本地端口: 1024
远程端口: 任何
边缘遍历: 否
操作: 阻止
确定。
================================================================================
disable port 1024 tcp out...
ok : disable port 1024 tcp out
================================================================================
规则名称: disable_1024_tcp_out
----------------------------------------------------------------------
已启用: 是
方向: 出
配置文件: 域,专用,公用
分组:
本地 IP: 任何
远程 IP: 任何
协议: TCP
本地端口: 1024
远程端口: 任何
边缘遍历: 否
操作: 阻止
确定。
================================================================================
disable port 1024 udp in...
ok : disable port 1024 udp in
================================================================================
规则名称: disable_1024_udp_in
----------------------------------------------------------------------
已启用: 是
方向: 入
配置文件: 域,专用,公用
分组:
本地 IP: 任何
远程 IP: 任何
协议: UDP
本地端口: 1024
远程端口: 任何
边缘遍历: 否
操作: 阻止
确定。
================================================================================
disable port 1024 udp out...
ok : disable port 1024 udp out
================================================================================
规则名称: disable_1024_udp_out
----------------------------------------------------------------------
已启用: 是
方向: 出
配置文件: 域,专用,公用
分组:
本地 IP: 任何
远程 IP: 任何
协议: UDP
本地端口: 1024
远程端口: 任何
边缘遍历: 否
操作: 阻止
确定。
================================================================================
disable port 3389 tcp in...
ok : disable port 3389 tcp in
================================================================================
规则名称: disable_3389_tcp_in
----------------------------------------------------------------------
已启用: 是
方向: 入
配置文件: 域,专用,公用
分组:
本地 IP: 任何
远程 IP: 任何
协议: TCP
本地端口: 3389
远程端口: 任何
边缘遍历: 否
操作: 阻止
确定。
================================================================================
disable port 3389 tcp out...
ok : disable port 3389 tcp out
================================================================================
规则名称: disable_3389_tcp_out
----------------------------------------------------------------------
已启用: 是
方向: 出
配置文件: 域,专用,公用
分组:
本地 IP: 任何
远程 IP: 任何
协议: TCP
本地端口: 3389
远程端口: 任何
边缘遍历: 否
操作: 阻止
确定。
================================================================================
disable port 3389 udp in...
ok : disable port 3389 udp in
================================================================================
规则名称: disable_3389_udp_in
----------------------------------------------------------------------
已启用: 是
方向: 入
配置文件: 域,专用,公用
分组:
本地 IP: 任何
远程 IP: 任何
协议: UDP
本地端口: 3389
远程端口: 任何
边缘遍历: 否
操作: 阻止
确定。
================================================================================
disable port 3389 udp out...
ok : disable port 3389 udp out
================================================================================
规则名称: disable_3389_udp_out
----------------------------------------------------------------------
已启用: 是
方向: 出
配置文件: 域,专用,公用
分组:
本地 IP: 任何
远程 IP: 任何
协议: UDP
本地端口: 3389
远程端口: 任何
边缘遍历: 否
操作: 阻止
确定。
task over, press any key to quit :)
关闭端口的脚本-winxp
在winxp下,开关端口的脚本命令有点不一样,整理了一下.
@echo off
rem @filename winxp_disable_port.bat
title close unused port, test on winxp
color 89
rem --> Check for permissions
IF "%PROCESSOR_ARCHITECTURE%" EQU "amd64" (
>nul 2>&1 "%SYSTEMROOT%\SysWOW64\cacls.exe" "%SYSTEMROOT%\SysWOW64\config\system"
) ELSE (
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
)
rem --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
echo Requesting administrative privileges...
goto L_RUN_AS_ADMIN
) else (
echo was admin now :^)
goto L_WAS_ADMIN_NOW
)
:L_RUN_AS_ADMIN
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\run_as_admin.vbs"
set params = %*:"=""
rem %~s0 is this file e.g. C:\Users\ADMINI~1\DOCUME~1\winxp_disable_port.BAT
echo UAC.ShellExecute "cmd.exe", "/c ""%~s0"" %params%", "", "runas", 1 >> "%temp%\run_as_admin.vbs"
call "%temp%\run_as_admin.vbs"
del "%temp%\run_as_admin.vbs"
exit /B
rem run_as_admin.vbs
rem Set UAC = CreateObject("Shell.Application")
rem UAC.ShellExecute "cmd.exe", "/c ""C:\Users\ADMINI~1\DOCUME~1\x.BAT"" ", "", "runas", 1
:L_WAS_ADMIN_NOW
rem %CD% is this file's dir tail not '\', e.g. d:\tmp
rem %~dp0 is this file's dir tail is '\', e.g. d:\tmp\
pushd "%CD%"
CD /D "%~dp0"
echo start firewall...
sc config SharedAccess start= auto > nul
net start SharedAccess > nul
rem make a bat to close given port
rem close_port_as_admin.bat action port protocol in|out
rem %1 is action : allow or block
rem %2 is port
rem %3 is protocol
set bat_to_close_one_port="%temp%\close_port_as_admin.bat"
set LINE_80=================================================================================
echo echo %LINE_80% > %bat_to_close_one_port%
echo echo %%1 port %%2 %%3... >> %bat_to_close_one_port%
echo if "%%1" == "block" goto :L_need_delete_port >> %bat_to_close_one_port%
rem add firewall rule by name
echo echo add port... >> %bat_to_close_one_port%
echo netsh firewall add portopening %%3 %%2 %%2_%%3 ^> NUL >> %bat_to_close_one_port%
echo goto :L_end_port_opt >> %bat_to_close_one_port%
echo :L_need_delete_port >> %bat_to_close_one_port%
rem delete firewall rule by name
echo echo delete port... >> %bat_to_close_one_port%
echo netsh firewall delete portopening %%3 %%2 ^> NUL >> %bat_to_close_one_port%
echo goto :L_end_port_opt >> %bat_to_close_one_port%
echo :L_end_port_opt >> %bat_to_close_one_port%
echo if '%%errorlevel%%' EQU '0' ^( >> %bat_to_close_one_port%
echo echo ok >> %bat_to_close_one_port%
echo ^) else ^( >> %bat_to_close_one_port%
echo echo failed >> %bat_to_close_one_port%
echo ^) >> %bat_to_close_one_port%
echo echo %LINE_80% >> %bat_to_close_one_port%
rem show the firewall rules by add, if name=all, show all firewall rules
rem echo netsh firewall show portopening >> %bat_to_close_one_port%
rem e.g.
rem call %bat_to_close_one_port% allow 135 tcp
rem call %bat_to_close_one_port% block 135 tcp
call %bat_to_close_one_port% block 135 tcp
call %bat_to_close_one_port% block 135 udp
call %bat_to_close_one_port% block 137 tcp
call %bat_to_close_one_port% block 137 udp
call %bat_to_close_one_port% block 138 tcp
call %bat_to_close_one_port% block 138 udp
call %bat_to_close_one_port% block 139 tcp
call %bat_to_close_one_port% block 139 udp
call %bat_to_close_one_port% block 445 tcp
call %bat_to_close_one_port% block 445 udp
call %bat_to_close_one_port% block 593 tcp
call %bat_to_close_one_port% block 593 udp
call %bat_to_close_one_port% block 1024 tcp
call %bat_to_close_one_port% block 1024 udp
call %bat_to_close_one_port% block 3389 tcp
call %bat_to_close_one_port% block 3389 udp
netsh firewall show portopening
echo task over, press any key to quit :)
pause > nul
del %bat_to_close_one_port%
xp下的运行效果
was admin now :)
start firewall...
请求的服务已经启动。
请键入 NET HELPMSG 2182 以获得更多的帮助。
================================================================================
block port 135 tcp...
delete port...
ok
================================================================================
================================================================================
block port 135 udp...
delete port...
ok
================================================================================
================================================================================
block port 137 tcp...
delete port...
ok
================================================================================
================================================================================
block port 137 udp...
delete port...
ok
================================================================================
================================================================================
block port 138 tcp...
delete port...
ok
================================================================================
================================================================================
block port 138 udp...
delete port...
ok
================================================================================
================================================================================
block port 139 tcp...
delete port...
ok
================================================================================
================================================================================
block port 139 udp...
delete port...
ok
================================================================================
================================================================================
block port 445 tcp...
delete port...
ok
================================================================================
================================================================================
block port 445 udp...
delete port...
ok
================================================================================
================================================================================
block port 593 tcp...
delete port...
ok
================================================================================
================================================================================
block port 593 udp...
delete port...
ok
================================================================================
================================================================================
block port 1024 tcp...
delete port...
ok
================================================================================
================================================================================
block port 1024 udp...
delete port...
ok
================================================================================
================================================================================
block port 3389 tcp...
delete port...
ok
================================================================================
================================================================================
block port 3389 udp...
delete port...
ok
================================================================================
task over, press any key to quit :)