标题: [网络连接] [分享]批处理根据MAC修改计算机名、IP、网关、NDS、计算机描述期待完善 [打印本页]
作者: lx427 时间: 2011-7-7 10:01 标题: [分享]批处理根据MAC修改计算机名、IP、网关、NDS、计算机描述期待完善
本人制作了一个批处理,用于公司内部电脑网络克隆后进一次进入系统时运行,能够根据MAC地址自动修改计算机名、配置IP、网关、NDS、计算机描述,先统计局域网内所有电脑的MAC地址,再把人名对应上做计算机描述,计算机名,IP地址是什么,当然随便你规划了,不过这个批处理有个小问题,就是在多网卡或者是同时存在宽带连接,本地连接时会无效,因为获取到的MAC地址会有多个,默认拿获取到的最后一个MAC进行匹配,因为最后面的列表中找不到对应的MAC所以就卡住不动了,期待高人指点完善,本人批处理功底差,代码写作不太行,只有一个思路,弄了这么久搞出这样一个批处理,确实有点成就,虽然在大家眼中也许算不了什么,特拿出来献丑了。- @echo off
- echo 正在配置IP地址、DNS请稍候……
- set MASK=255.255.255.0
- set GATEWAY=192.168.1.1
- set DNS1=192.168.1.220
- set DNS2=192.168.1.1
- set WINS=192.168.1.200
- for /f "tokens=12 delims= " %%i in ('ipconfig /all^|find /i "Physical Address"') do set mac=%%i
- for /f "tokens=1,2*" %%i in ('ipconfig /all^|find "Ethernet adapter"') do set Ethernet=%%k
- for /f "tokens=1,2" %%i in ('more /e +17 %0 ^|find /i "%mac:~,-1%"') do set "name=%%i"&set "IP=%%j"
- reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ComputerName\ComputerName" /v ComputerName /t reg_sz /d %name% /f >nul 2>nul
- reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters" /v "NV Hostname" /t reg_sz /d %name% /f >nul 2>nul
- reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters" /v Hostname /t reg_sz /d %name% /f >nul 2>nul
- netsh interface ip set address "%Ethernet:~,-2%" static %IP% %Mask% %GATEWAY% 1 >nul 2>nul
- netsh interface ip set dns "%Ethernet:~,-2%" static %DNS1% register=PRIMARY >nul 2>nul
- netsh interface ip add dns "%Ethernet:~,-2%" %DNS2% index=2 >nul 2>nul
- netsh interface ip set wins "%Ethernet:~,-2%" static %WINS% >nul 2>nul
- exit
- PC001 192.168.1.100 00-E0-4C-41-11-A6 祥子
- PC002 192.168.1.101 00-e0-62-0b-1f-6c 郝文婕
- PC003 192.168.1.102 00-e0-62-0b-22-6d 漆浪
- PC004 192.168.1.103 00-e0-66-02-b0-1e 彭雅娜
- PC005 192.168.1.104 00-e0-66-02-f1-c2 李颖诗
- PC006 192.168.1.105 00-e0-66-19-de-e9 陈永行
- PC007 192.168.1.106 00-e0-66-02-f4-15 宁智雄
- PC008 192.168.1.107 00-e0-66-02-b0-1e 彭雅娜
- PC009 192.168.1.108 00-e0-4c-41-11-b3 冯晶晶
- PC010 192.168.1.109 00-e0-66-02-df-8c 周国香
- PC011 192.168.1.110 00-e0-66-02-dd-d8 邓国花
- PC012 192.168.1.111 00-e0-66-0d-71-d9 邱瑾
- PC013 192.168.1.112 00-e0-66-19-de-ea 胡孝龙
复制代码
作者: ArdentMan 时间: 2011-7-7 11:27
本帖最后由 ArdentMan 于 2011-7-7 12:23 编辑
- @echo off&setlocal enabledelayedexpansion
- echo 正在配置IP地址、DNS请稍候……
- set MASK=255.255.255.0
- set GATEWAY=192.168.1.1
- set DNS1=192.168.1.220
- set DNS2=192.168.1.1
- set WINS=192.168.1.200
- for /f "delims=:" %%i in ('findstr /n "exit$" %~fs0') do set "num=%%i"
- for /f "tokens=1-4" %%a in ('more +%num% %fs0') do set "" %%c"=a"&set "_ %%c=%%a"&set ". %%c=%%b"&set "@ %%c=%%d"
- for /f "tokens=3 delims=: " %%i in ('ipconfig /all^|finstr /c:"Ethernet adapter"') do set "Ethernet=%%i"
- for /f "tokens=2 delims=:" %%i in ('ipconfig /all^|findstr /c:"Physical Address"') do (
- if defined "%%i" (
- wmic computersystem where "name='!_%%i!'" call rename '!@%%i!'
- netsh interface ip set address "%Ethernet%" static !.%%i! %MASK% %GATEWAY%>nul 2>nul
- netsh interface ip set dns "%Ethernet%" static %DNS1% register=PRIMARY>nul 2>nul
- netsh interface ip add dns "%Ethernet%" %DNS2% index=2>nul 2>nul
- netsh interface ip set wins "%Ethernet%" static %WINS%>nul 2>nul
- )
- )
- exit
- PC001 192.168.1.100 00-E0-4C-41-11-A6 祥子
- PC002 192.168.1.101 00-e0-62-0b-1f-6c 郝文婕
- PC003 192.168.1.102 00-e0-62-0b-22-6d 漆浪
- PC004 192.168.1.103 00-e0-66-02-b0-1e 彭雅娜
- PC005 192.168.1.104 00-e0-66-02-f1-c2 李颖诗
- PC006 192.168.1.105 00-e0-66-19-de-e9 陈永行
- PC007 192.168.1.106 00-e0-66-02-f4-15 宁智雄
- PC008 192.168.1.107 00-e0-66-02-b0-1e 彭雅娜
- PC009 192.168.1.108 00-e0-4c-41-11-b3 冯晶晶
- PC010 192.168.1.109 00-e0-66-02-df-8c 周国香
- PC011 192.168.1.110 00-e0-66-02-dd-d8 邓国花
- PC012 192.168.1.111 00-e0-66-0d-71-d9 邱瑾
- PC013 192.168.1.112 00-e0-66-19-de-ea 胡孝龙
复制代码
作者: lx427 时间: 2011-7-13 09:51
本帖最后由 lx427 于 2011-7-13 10:15 编辑
2# ArdentMan
感谢大虾回复,我把这个批处理加上我用的这台电脑的MAC地址,原本是用的动态IP,想通过这个批处理改成静态IP,我在运行这个批处理的时候没有作用,我细心对比发现在上面第10行可能是大虾打错了,把findstr写成了finstr,前面用的都是findstr,我改成findstr,运行后仍然无效,我把@echo off去掉,在最后加了一个暂停,运行结果如下,还肯请大虾修改一下。
另外介绍下我的电脑上安装了虚拟机,有两个虚拟网卡,一个真实网卡。
d:\我的文档\桌面>setlocal enabledelayedexpansion
d:\我的文档\桌面>echo 正在配置IP地址、DNS请稍候……
正在配置IP地址、DNS请稍候……
d:\我的文档\桌面>set MASK=255.255.255.0
d:\我的文档\桌面>set GATEWAY=192.168.1.1
d:\我的文档\桌面>set DNS1=192.168.1.250
d:\我的文档\桌面>set DNS2=192.168.1.1
d:\我的文档\桌面>set WINS=192.168.1.200
d:\我的文档\桌面>for /F "delims=:" %i in ('findstr /n "exit$" d:\我的文档\桌面\
计算机~1.BAT') do set "num=%i"
d:\我的文档\桌面>for /F "tokens=1-4" %a in ('more + d" for /f "tokens=3 delims=:
" %i in ('ipconfig /all|findstr /c:"Ethernet adapter"') do set "Ethernet=%i"
内部错误。
d:\我的文档\桌面>for /F "tokens=2 delims=:" %i in ('ipconfig /all|findstr /c:"Ph
ysical Address"') do (if defined "%i" (
wmic computersystem where "name='!_%i!'" call rename '!@%i!'
netsh interface ip set address "" static !.%i! 255.255.255.0 192.168.1.1 1>nul
2>nul
netsh interface ip set dns "" static 192.168.1.250 register=PRIMARY 1>nul 2>nul
netsh interface ip add dns "" 192.168.1.1 index= 2>nul
netsh interface ip set wins "" static 192.168.1.200 1>nul 2>nul
) )
" (我的文档\桌面>(if defined " 00-50-56-C0-00-08
!' call rename '!@ 00-50-56-C0-00-080-50-56-C0-00-08
! 255.255.255.0 192.168.1.1 1>nul 2>nul !. 00-50-56-C0-00-08
netsh interface ip set dns "" static 192.168.1.250 register=PRIMARY 1>nul 2>nul
netsh interface ip add dns "" 192.168.1.1 index= 2>nul
netsh interface ip set wins "" static 192.168.1.200 1>nul 2>nul
) )
" (我的文档\桌面>(if defined " 00-50-56-C0-00-01
!' call rename '!@ 00-50-56-C0-00-010-50-56-C0-00-01
! 255.255.255.0 192.168.1.1 1>nul 2>nul !. 00-50-56-C0-00-01
netsh interface ip set dns "" static 192.168.1.250 register=PRIMARY 1>nul 2>nul
netsh interface ip add dns "" 192.168.1.1 index= 2>nul
netsh interface ip set wins "" static 192.168.1.200 1>nul 2>nul
) )
" (我的文档\桌面>(if defined " 00-E0-4C-D9-25-40
!' call rename '!@ 00-E0-4C-D9-25-400-E0-4C-D9-25-40
! 255.255.255.0 192.168.1.1 1>nul 2>nul !. 00-E0-4C-D9-25-40
netsh interface ip set dns "" static 192.168.1.250 register=PRIMARY 1>nul 2>nul
netsh interface ip add dns "" 192.168.1.1 index= 2>nul
netsh interface ip set wins "" static 192.168.1.200 1>nul 2>nul
) )
d:\我的文档\桌面>pause
在我的电脑上运行ipconfig /all结果如下
C:\Documents and Settings\hyt>ipconfig /all
Windows IP Configuration
Host Name . . . . . . . . . . . . : PCoo2
Primary Dns Suffix . . . . . . . :
Node Type . . . . . . . . . . . . : Hybrid
IP Routing Enabled. . . . . . . . : Yes
WINS Proxy Enabled. . . . . . . . : No
Ethernet adapter VMware Network Adapter VMnet8:
Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : VMware Virtual Ethernet Adapter for
VMnet8
Physical Address. . . . . . . . . : 00-50-56-C0-00-08
Dhcp Enabled. . . . . . . . . . . : No
IP Address. . . . . . . . . . . . : 192.168.0.1
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
Ethernet adapter VMware Network Adapter VMnet1:
Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : VMware Virtual Ethernet Adapter for
VMnet1
Physical Address. . . . . . . . . : 00-50-56-C0-00-01
Dhcp Enabled. . . . . . . . . . . : No
IP Address. . . . . . . . . . . . : 192.168.59.1
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
Ethernet adapter 本地连接 2:
Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : NVIDIA nForce 10/100 Mbps Ethernet
Physical Address. . . . . . . . . : 00-E0-4C-D9-25-40
Dhcp Enabled. . . . . . . . . . . : Yes
Autoconfiguration Enabled . . . . : Yes
IP Address. . . . . . . . . . . . : 192.168.1.26
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.1.5
DHCP Server . . . . . . . . . . . : 192.168.1.250
DNS Servers . . . . . . . . . . . : 192.168.1.1
192.168.1.250
Primary WINS Server . . . . . . . : 192.168.1.250
Lease Obtained. . . . . . . . . . : 2011年7月13日星期三 09:03:36
Lease Expires . . . . . . . . . . : 2011年7月13日星期三 17:03:36
作者: temp 时间: 2011-7-13 11:06
2# ArdentMan
感谢大虾回复,我把这个批处理加上我用的这台电脑的MAC地址,原本是用的动态IP,想通过这个批处理改成静态IP,我在运行这个批处理的时候没有作用,我细心对比发现在上面第10行可能是大虾打错了, ...
lx427 发表于 2011-7-13 09:51
- finstr /?
- 'finstr' 不是内部或外部命令,也不是可运行的程序
- 或批处理文件。
复制代码
- findstr /?
- 在文件中寻找字符串。
-
- FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/F:file]
- [/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]
- strings [[drive:][path]filename[ ...]]
-
- /B 在一行的开始配对模式。
- ... ...
复制代码
作者: zhong365 时间: 2013-8-3 10:31
批处理很好用。。有一个问题。。计算机MAC地址与列表中的MAC地址不符的时候, 会一直停在那里。
请问要怎么实现运行计算机MAC列表中不符时 ,提示并退出
作者: stopzei 时间: 2014-12-3 16:28
学习了,现在才看到
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |