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