forked from xxcanghai/cnblogsFiles
-
Notifications
You must be signed in to change notification settings - Fork 0
/
自动修改本机IP地址.bat
233 lines (208 loc) · 6.66 KB
/
自动修改本机IP地址.bat
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
@echo off
setlocal enabledelayedexpansion
title 修改本机IP地址 by:小小沧海20130409
:init
cls&echo ——————————————自动修改本机IP地址——————————————
rem 系统版本,值可为Windows7或是WindowsXP,或是auto(表示自动获取)
set SYSVER=auto
rem 要更改的网卡名称,auto表示自动获取第一块“以太网适配器”
set ETH=auto
rem IP来源,值仅为两个static和dhcp,ques表示询问,由使用者填写
rem 静态IP请填写static,从网关自动获取IP请填写dhcp
set IPSOURCE=ques
rem 要改成的IP地址,ques同上
set IPADDR=ques
rem 要改成的子网掩码,ques同上
set MASK=ques
rem 要使用的默认网关,ques同上
set GATEWAY=ques
rem DNS模式,值仅为两个static和dhcp
rem 静态DNS请填写static,从网关自动获取DNS请填写dhcp
set DNSSOURCE=ques
rem 要使用的首选DNS,ques同上
set DNS1=ques
rem 要使用的备用DNS,ques同上
set DNS2=ques
set LOG=%TEMP%\changeIP_log.txt
echo 运行日期:%date% %time%>%LOG%
:start
rem ===============使用者填写参数值=======================
rem 自动获取系统版本,结果为 Windows7 或是 WindowsXP(只测试了这两个系统)
if "%SYSVER%"=="auto" (
set /p=正在自动获取系统版本...<nul
for /f "skip=1 tokens=2-3 delims= " %%i in ('wmic os get caption') do set SYSVER=%%i%%j
if /i "!SYSVER!"=="Windows7" (
echo 成功![Win7]
) else (
if /i "!SYSVER!"=="WindowsXP" (
echo 成功![WinXP]
) else (
echo [!SYSVER!]
echo 【注意】非Win7和XP系统不保证能执行成功!&pause>nul
)
)
)
rem 自动获取网卡名称
if "%ETH%"=="auto" (
echo 正在自动获取网络适配器信息...
set index=0
set select=1
for /f "skip=3 tokens=4* delims= " %%i in ('netsh interface ipv4 show interfaces^|find /i /v "Loopback"') do (
set /a index=!index!+1
set ethname=%%j
echo [!index!]!ethname!
)
if !index!==1 (
set ETH=!ethname!
) else ( if !index! GTR 1 (
:select
set /p=请选择要设置的网卡编号:<nul
set select=0&set /p select=
if /i !select! LSS 1 goto select
if /i !select! GTR !index! goto select
set index=0
for /f "skip=3 tokens=4* delims= " %%i in ('netsh interface ipv4 show interfaces^|find /i /v "Loopback"') do (
set /a index=!index!+1
if !index!==!select! (
set ETH=%%j
)
)
))
if "!ETH!"=="auto" (
echo 自动获取网卡名称失败,请右键编辑本批处理,手动填写网卡名称!&pause>nul&exit
) else (
rem set/p=[!ETH!]<nul
echo 成功!
)
)
:quesIP
if "%IPSOURCE%"=="ques" (
echo →请填写【IP地址来源】^(值仅为两个static和dhcp,直接回车为static^)
set /p IPSOURCE=
if "!IPSOURCE!"=="ques" set IPSOURCE=static
if /i "!IPSOURCE!" NEQ "static" (if /i "!IPSOURCE!" NEQ "dhcp" (
set IPSOURCE=static
echo IP来源填写错误,将变更为static模式
pause>nul
))
)
if /i "%IPSOURCE%"=="dhcp" goto quesDNS
if "%IPADDR%"=="ques" (
echo →请填写【IP地址】^(直接回车为192.168.1.100^)
set /p IPADDR=
if "!IPADDR!"=="ques" set IPADDR=192.168.1.100
)
if "%MASK%"=="ques" (
echo →请填写【子网掩码】^(直接回车为255.255.255.0^)
set /p MASK=
if "!MASK!"=="ques" set MASK=255.255.255.0
)
if "%GATEWAY%"=="ques" (
echo →请填写【默认网关】^(直接回车为192.168.1.1^)
set /p GATEWAY=
if "!GATEWAY!"=="ques" set GATEWAY=192.168.1.1
)
:quesDNS
if "%DNSSOURCE%"=="ques" (
echo →请填写【DNS来源】^(值仅为两个static和dhcp,直接回车为static^)
set /p DNSSOURCE=
if "!DNSSOURCE!"=="ques" set DNSSOURCE=static
if /i "!DNSSOURCE!" NEQ "static" (if /i "!DNSSOURCE!" NEQ "dhcp" (
set DNSSOURCE=static
echo DNS来源填写错误,将变更为static模式
pause>nul
))
)
if /i "%DNSSOURCE%"=="dhcp" goto checkInfo
if "%DNS1%"=="ques" (
echo →请填写【首选DNS地址】^(直接回车为8.8.8.8^)
set /p DNS1=
if "!DNS1!"=="ques" set DNS1=8.8.8.8
)
if "%DNS2%"=="ques" (
echo →请填写【备用DNS地址】^(直接回车为8.8.4.4^)
set /p DNS2=
if "!DNS2!"=="ques" set DNS2=8.8.4.4
)
:checkInfo
cls
echo 即将应用以下配置:
call :showInfo
echo 请确认信息是否正确,输入Y继续,输入N退出,输入Q显示本机网络信息
set choose=nul&set /p choose=
if /i "%choose%"=="nul" goto checkInfo
if /i "%choose%"=="N" exit
if /i "%choose%"=="Q" call :getInfo & pause & goto checkInfo
if /i "%choose%" NEQ "Y" goto checkInfo
echo ★注意★请关闭防火墙或允许所有弹出的安全软件提示,否则无法成功执行!
:changeIP
rem 通过dhcp删除原有IP配置
echo →设置"%ETH%"的IP源为DHCP,以删除原有IP地址 >>%LOG%
netsh -c interface ip set address name="%ETH%" source=dhcp >>%LOG%
if /i "%IPSOURCE%"=="static" (
echo →设置IP为"%IPADDR%",掩码为"%MASK%",网关为"%GATEWAY%" >>%LOG%
netsh -c interface ip set address name="%ETH%" source=static address="%IPADDR%" mask="%MASK%" gateway="%GATEWAY%" gwmetric=1 >>%LOG%
)
rem 删除原有DNS配置
echo →删除原有DNS配置 >>%LOG%
netsh -c interface ip delete dns "%ETH%" all >>%LOG%
if /i "%DNSSOURCE%"=="static" (
echo →设置首选DNS为%DNS1% >>%LOG%
netsh -c interface ip add dns name="%ETH%" addr="%DNS1%" index=1 >>%LOG%
echo →设置备用DNS为%DNS2% >>%LOG%
netsh -c interface ip add dns name="%ETH%" addr="%DNS2%" index=2 >>%LOG%
rem ↑此处可继续增加多个DNS服务器地址
) else (if /i "%DNSSOURCE%"=="dhcp" (
echo →设置DNS为DHCP模式 >>%LOG%
netsh -c interface ip set dns name="%ETH%" dhcp >>%LOG%
))
:end
cls
rem echo 【要设定的信息】
rem call :showInfo
echo 【当前本机信息】
call :getInfo
echo ======================================
echo 如果上下一致则说明修改成功!
echo 如果不一致则请查看日志文件!
echo 输入L查看日志文件,输入E退出程序。
set choose=nul&set /p choose=
if /i "%choose%"=="L" start %LOG%&goto end
if /i "%choose%"=="E" exit
if /i "%choose%"=="nul" goto end
echo 程序执行结束,按任意键退出...
pause>nul
exit
:showInfo
echo 【本机系统】:%SYSVER%
echo 【网卡名称】:%ETH%
echo 【IP来源 】:%IPSOURCE%
if "%IPSOURCE%"=="static" (
echo 【IP地址 】:%IPADDR%
echo 【子网掩码】:%MASK%
echo 【默认网关】:%GATEWAY%
)
echo 【DNS来源 】:%DNSSOURCE%
if "%DNSSOURCE%"=="static" (
echo 【首选DNS 】:%DNS1%
echo 【备用DNS 】:%DNS2%
)
rem goto :eof等于返回return
goto :eof
:getInfo
netsh -c interface ip show address name="%ETH%"
netsh -c interface ip show dns name="%ETH%"
goto :eof
:windows7
==============================================
接口 "本地连接" 的配置
DHCP 已启用: 否
IP 地址: 192.168.1.253
子网前缀: 192.168.1.0/24 (掩码 255.255.255.0)
默认网关: 192.168.1.1
网关跃点数: 1
InterfaceMetric: 20
接口 "本地连接" 的配置
静态配置的 DNS 服务器: 8.8.8.8
8.8.4.4
用哪个前缀注册: 只是主要