1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
@ echo  off
rem v1.0.2
color 2f
title Windows防火墙端口阻塞
 
set  dport=8000
set  direction=out
goto menu
 
:menu
set  rule_name=block_tcp_%direction%_%dport%
echo .
echo         菜单:
echo             1. 增加这条规则:      
echo                                    [规则名:%rule_name%]
echo                                    [操作: 阻塞]
echo                                    [端口: %dport%]
echo                                    [方向: %direction%]
echo             2. 删除这条规则:   
echo                                    [规则名: %rule_name%]
echo             3. 设定新的端口和方向: 
echo                                    [默认值: 端口=8000, 方向=out]
echo             4. 显示这条规则:     
echo                                    [规则名: %rule_name%]
echo             5. 显示所有名称以block_tcp开头的规则:     
echo                                    [规则名: 以“block_tcp”开头]
echo             8. 帮助
echo             9. 菜单
echo             0. 退出
echo         _____________________________________________________________
echo         注1:选择数字,然后按回车;
echo .
goto start
 
 
:menu_help
echo .
echo   操作方法:
echo .
echo     →  按3(回车):设定参数,示例如下,
echo                           端口[8000]=9001(回车)
echo                           方向[out]=(回车)(即默认的out);
echo     →  按1(回车):增加新规则“block_tcp_out_9001”到防火墙;
echo     →  按4(回车):显示当前规则“block_tcp_out_9001”;
echo     →  按2(回车):删除当前规则“block_tcp_out_9001”;
echo      重复上述步骤,操作新的规则;
echo     →  按5(回车):显示所有名称以“block_tcp”开头的规则;
echo      删除前,请先确认当前设定的端口和方向。
echo .
goto start
 
 
:start
echo .
echo         [1(新增),2(删除),3(设定),4(显示),5(显示所有)]
echo         -------------------------------------------------------------
set  choice=
set  /p  choice=请选择:
echo .
if  /i  "%choice%" == ""  goto warn
if  /i  %choice%==1 goto rule_add
if  /i  %choice%==2 goto rule_del
if  /i  %choice%==3 goto setting
if  /i  %choice%==4 goto rule_show
if  /i  %choice%==5 goto rule_show_all
if  /i  %choice%==8 goto menu_help
if  /i  %choice%==9 goto menu
if  /i  %choice%==0 goto end
 
 
 
:warn
echo  警告!输入无效,请重新选择!& goto start
 
:rule_add
netsh advfirewall firewall add rule name= "%rule_name%"  dir =%direction% protocol=tcp remoteport=%dport% action=block
goto start
 
 
:rule_del
netsh advfirewall firewall del rule  dir =%direction% name= "%rule_name%"
goto start
 
 
:rule_show
netsh advfirewall firewall show rule  dir =%direction% name= "%rule_name%"
goto start
 
 
:rule_show_all
netsh advfirewall firewall show rule  dir =%direction% name=all|findstr block_tcp
goto start
 
 
:setting
set  dport=8000
set  /p  dport=端口[8000]:
echo  %dport%|findstr  "[^0-9]"
echo  %dport%|findstr  "[^0-9]"  > nul && goto setting || goto setting_2
 
 
 
:setting_2
set  direction=out
set  /p  direction=方向[out]:
echo  %direction%|findstr  "in out"  > nul && goto menu || goto setting_2
 
 
 
:end
exit