[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[网络连接] [分享]批处理根据MAC修改计算机名、IP、网关、NDS、计算机描述期待完善

本人制作了一个批处理,用于公司内部电脑网络克隆后进一次进入系统时运行,能够根据MAC地址自动修改计算机名、配置IP、网关、NDS、计算机描述,先统计局域网内所有电脑的MAC地址,再把人名对应上做计算机描述,计算机名,IP地址是什么,当然随便你规划了,不过这个批处理有个小问题,就是在多网卡或者是同时存在宽带连接,本地连接时会无效,因为获取到的MAC地址会有多个,默认拿获取到的最后一个MAC进行匹配,因为最后面的列表中找不到对应的MAC所以就卡住不动了,期待高人指点完善,本人批处理功底差,代码写作不太行,只有一个思路,弄了这么久搞出这样一个批处理,确实有点成就,虽然在大家眼中也许算不了什么,特拿出来献丑了。
  1. @echo off
  2. echo 正在配置IP地址、DNS请稍候……
  3. set MASK=255.255.255.0
  4. set GATEWAY=192.168.1.1
  5. set DNS1=192.168.1.220
  6. set DNS2=192.168.1.1
  7. set WINS=192.168.1.200
  8. for /f "tokens=12 delims= " %%i in ('ipconfig /all^|find /i "Physical Address"') do set mac=%%i
  9. for /f "tokens=1,2*" %%i in ('ipconfig /all^|find "Ethernet adapter"')  do set Ethernet=%%k
  10. for /f "tokens=1,2" %%i in ('more /e +17 %0 ^|find /i "%mac:~,-1%"') do set "name=%%i"&set "IP=%%j"
  11. reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ComputerName\ComputerName" /v ComputerName /t reg_sz /d %name% /f >nul 2>nul
  12. reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters" /v "NV Hostname" /t reg_sz /d %name% /f >nul 2>nul
  13. reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters" /v Hostname /t reg_sz /d %name% /f >nul 2>nul
  14. netsh interface ip set address "%Ethernet:~,-2%" static %IP% %Mask% %GATEWAY% 1 >nul 2>nul
  15. netsh interface ip set dns "%Ethernet:~,-2%" static %DNS1% register=PRIMARY >nul 2>nul
  16. netsh interface ip add dns "%Ethernet:~,-2%"  %DNS2% index=2 >nul 2>nul
  17. netsh interface ip set wins "%Ethernet:~,-2%" static %WINS%  >nul 2>nul
  18. exit
  19. PC001        192.168.1.100        00-E0-4C-41-11-A6        祥子
  20. PC002        192.168.1.101        00-e0-62-0b-1f-6c        郝文婕
  21. PC003        192.168.1.102        00-e0-62-0b-22-6d        漆浪
  22. PC004        192.168.1.103        00-e0-66-02-b0-1e        彭雅娜
  23. PC005        192.168.1.104        00-e0-66-02-f1-c2        李颖诗
  24. PC006        192.168.1.105        00-e0-66-19-de-e9        陈永行
  25. PC007        192.168.1.106        00-e0-66-02-f4-15        宁智雄
  26. PC008        192.168.1.107        00-e0-66-02-b0-1e        彭雅娜
  27. PC009        192.168.1.108        00-e0-4c-41-11-b3        冯晶晶
  28. PC010        192.168.1.109        00-e0-66-02-df-8c        周国香
  29. PC011        192.168.1.110        00-e0-66-02-dd-d8        邓国花
  30. PC012        192.168.1.111        00-e0-66-0d-71-d9        邱瑾
  31. PC013        192.168.1.112        00-e0-66-19-de-ea        胡孝龙
复制代码
1

评分人数

本帖最后由 ArdentMan 于 2011-7-7 12:23 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. echo 正在配置IP地址、DNS请稍候……
  3. set MASK=255.255.255.0
  4. set GATEWAY=192.168.1.1
  5. set DNS1=192.168.1.220
  6. set DNS2=192.168.1.1
  7. set WINS=192.168.1.200
  8. for /f "delims=:" %%i in ('findstr /n "exit$" %~fs0') do set "num=%%i"
  9. for /f "tokens=1-4" %%a in ('more +%num% %fs0') do set "" %%c"=a"&set "_ %%c=%%a"&set ". %%c=%%b"&set "@ %%c=%%d"
  10. for /f "tokens=3 delims=: " %%i in ('ipconfig /all^|finstr /c:"Ethernet adapter"') do set "Ethernet=%%i"
  11. for /f "tokens=2 delims=:" %%i in ('ipconfig /all^|findstr /c:"Physical Address"') do (
  12.   if defined "%%i" (
  13.     wmic computersystem where "name='!_%%i!'" call rename '!@%%i!'
  14.     netsh interface ip set address "%Ethernet%" static !.%%i! %MASK% %GATEWAY%>nul 2>nul
  15.     netsh interface ip set dns "%Ethernet%" static %DNS1% register=PRIMARY>nul 2>nul
  16.     netsh interface ip add dns "%Ethernet%" %DNS2% index=2>nul 2>nul
  17.     netsh interface ip set wins "%Ethernet%" static %WINS%>nul 2>nul
  18.   )
  19. )
  20. exit
  21. PC001        192.168.1.100        00-E0-4C-41-11-A6        祥子
  22. PC002        192.168.1.101        00-e0-62-0b-1f-6c        郝文婕
  23. PC003        192.168.1.102        00-e0-62-0b-22-6d        漆浪
  24. PC004        192.168.1.103        00-e0-66-02-b0-1e        彭雅娜
  25. PC005        192.168.1.104        00-e0-66-02-f1-c2        李颖诗
  26. PC006        192.168.1.105        00-e0-66-19-de-e9        陈永行
  27. PC007        192.168.1.106        00-e0-66-02-f4-15        宁智雄
  28. PC008        192.168.1.107        00-e0-66-02-b0-1e        彭雅娜
  29. PC009        192.168.1.108        00-e0-4c-41-11-b3        冯晶晶
  30. PC010        192.168.1.109        00-e0-66-02-df-8c        周国香
  31. PC011        192.168.1.110        00-e0-66-02-dd-d8        邓国花
  32. PC012        192.168.1.111        00-e0-66-0d-71-d9        邱瑾
  33. PC013        192.168.1.112        00-e0-66-19-de-ea        胡孝龙
复制代码
一路飘过的鸟~~~

TOP

本帖最后由 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

TOP

2# ArdentMan


感谢大虾回复,我把这个批处理加上我用的这台电脑的MAC地址,原本是用的动态IP,想通过这个批处理改成静态IP,我在运行这个批处理的时候没有作用,我细心对比发现在上面第10行可能是大虾打错了, ...
lx427 发表于 2011-7-13 09:51
  1. finstr /?
  2. 'finstr' 不是内部或外部命令,也不是可运行的程序
  3. 或批处理文件。
复制代码
  1. findstr /?
  2. 在文件中寻找字符串。
  3. FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/F:file]
  4.         [/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]
  5.         strings [[drive:][path]filename[ ...]]
  6.   /B         在一行的开始配对模式。
  7. ... ...
复制代码

TOP

批处理很好用。。有一个问题。。计算机MAC地址与列表中的MAC地址不符的时候, 会一直停在那里。
请问要怎么实现运行计算机MAC列表中不符时 ,提示并退出

TOP

学习了,现在才看到

TOP

返回列表