2023年11月26日发(作者:)
dazhu10/blog/static/
366007152008102003850553/
根据MAC地址自动更改计算机名IP的批处
理
一些错误信息的解决方法:
1、C:>wmic path win32_pnpsigneddriver
节点 - s-151
错误:
描述 = 提供程序加载失败
解决方法:是msinfo.dll没有注册的问题,l.com上下载一个ms
复制到"%SystemRoot%pchealthhelpctrbinaries"目录重新注册下就ok 了
2、C:>wmic path win32_pnpsigneddriver
错误:
代码 = 0x8007007e
说明 = 找不到制定的模块
设备 = win32
解决方法:暂时未知
网上一段说明
forums.microso/china/ShowPos?PostID=1971041&SiteID=15
出现 error 0x8007007e消息
原因:通常是因为系统中的Urlm文件和Cabinwr.dll文件丢失或者没有注册引起
的 .
解决:
在XP下: 运行 SFC 替换这两个文件即可. 运行 Sfc /Scanonce
在 Win2K 下:
1.运行: Regsvr32 urlmon.dll 如果还是不行,请尝试以下的方法:
2.进入[控制面板→添加/删除程序],选择 Microsoft Internet Explorer 后单击 [更
改/删除]按钮,选择 [修复Internet Explorer],并跟随指示进行修复即可.
3.尝试安装Microsoft XML Parser的最新版本,当前版本是•Microsoft XML Parser3.0
sp2.
下载链接为:
o/downloads/details.aspx?FamilyId=B1AD2C0A-8CC6-443B-AB8
3-F8516C72FAC1&displaylang=en
将下面的文本复制到批命令中执行
@echo off & SETLOCAL ENABLEDELAYEDEXPANSION
:::::::::::::::::::::::::::::::::::::::::::::::::::
::auto_set_ip_v
::根据mac地址自动修改ip地址、网关、dns、计算机名、工作组等
::code by:vkill
:::::::::::::::::::::::::::::::::::::::::::::::::::
::更新记录
::2008.07.01 v1.0 完成基本的功能
::2008.07.04 v1.2 修改ip地址由原来的netsh命令转为wmic命令
:: 增加修改工作组功能
:: 增加可以按照ip来得到自动得到标准mask
:: 增加自动判断物理网卡型号
:: 增加了可不修改dns 网关等判断
::2008.07.06 v1.4 去掉了devcon外部命令的支持,全部使用wmic来完成
:: 在配置ip前增加了确认信息,用了一个等待用户确认的高级用法
:: 增加记录ip准配置日志功能
:: 增加了备份ip信息功能
:: 增加了可自定义数据库存放在本脚本还是外部文件中的功能
::2008.07.08 v1.6 修正匹配网卡型号时条件太多的问题
:: 增加如安装有多物理网卡时让你选择的功能
:: 增加修改ip、dns等根据返回值判断是否修改成功
:: 去掉备份准配置信息的功能
::2008.07.09 v1.7 修正了因为是系统缺少dll而提示找不到网卡的问题
:::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::
::变量设置
::设置为外部数据库时需要把:::::::::database_start::::::::::
和:::::::::database_end::::::::::::之间的数据复制到制定的文件中
set "datebase="
::如果要把数据库存放在本脚本内就把下面这行 ::set "datebase=%~0" 的注释去掉
set "datebase=%~0"
set "t=%random%"
:::::::::::::::::::::::::::::::::::::::::::::::::::
goto :start_
:::::::::::::::::::::::::::::::::
:::::::::database_start::::::::::
:::::::::::::::::::::::::::::::::
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;readme
;注意:分隔符是 [tab],可用excel打开来修改
;mac_address----中间可以是 : 也可以是 - ,例子( 00:01:23:45:67:89 或者
00-01-23-45-67-89 )
;enabledhcp----(0/1),如为1表示将设置为dhcp,后面的addr mask等等都不生效,为0
则反之
;mask----如设置为standard,那么将根据你设置的ip地址自动来计算并设置为标准的
mask,如想用子网,那么这里就照情况写,如255.255.255.224
;mac_address / enabledhcp / addr / mask ----这四项必须
;hostname / workgroup / gateway / dns_primary / dns_second ----各项,如不想修改,
保持原样,可写为 none
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;mac_address hostname workgroup enabledhcp addr mask gateway dns_primary dns_second
;00:01:23:45:67:89 test myhost 0 192.168.251.100 standard 192.168.251.254
202.100.64.68 202.100.64.66
00-e0-4c-0b-f4-3c admin myhost 0 192.168.251.116 standard 192.168.251.254
192.168.251.254 202.100.64.68
:::::::::::::::::::::::::::::::::
:::::::::database_end::::::::::::
:::::::::::::::::::::::::::::::::
::start::::::::::
:start_
title auto_set_ip_v
if not exist "%datebase%" (call :error "缺少数据库文件%datebase%")
::setp0--脚本功能介绍
cls
echo.
echo.
echo.
echo _________________________________________________________________
echo.
echo 根据mac地址自动修改ip地址、网关、dns、计算机名、工作组等
echo.
echo 使用前请先修改%datebase%,建议使用excel来修改
echo 适合于只安装多个物理网卡
echo 如果需要把数据库放到本脚本内修改变量datebase,建议看脚本26行左右注
释
echo.
echo by:vkill
echo _________________________________________________________________
set/p= 3秒后继
续... ping -n 4 127.1 >nul 2>nul ::########################## :setp1 cls echo 获取硬件信息中(如系统刚启动等待的时间要长一些)... wmic path win32_pnpsigneddriver >nul 2>nul || ( echo 执行wmic path win32_pnpsigneddriver发生错误 echo 具体错误信息参见google baidu 等 echo 部分错误信息参见/?tid=83464 echo 错误信息如下 echo _________________________________________________________________ echo c:^>wmic path win32_pnpsigneddriver wmic path win32_pnpsigneddriver echo _________________________________________________________________ echo 任意键退出... pause >nul 2>nul exit /b ) ::得到已安装的物理网卡型号 echo 获取网卡型号中... wmic path win32_pnpsigneddriver where "deviceclass='net' and compatid like '%%%%'" get FriendlyName >"%temp%%t%_1" 2>nul wmic path win32_pnpsigneddriver where "deviceclass='net' and compatid like '%%%%'" get Description >"%temp%%t%_2" 2>nul set n=0 for /f "tokens=*" %%a in ('type "%temp%%t%_2"') do (set/a n+=1 & set "a!n!=%%a") set n=0 for /f "tokens=*" %%a in ('type "%temp%%t%_1"') do (set/a n+=1 & set "b!n!=%%a") cd.>"%temp%%t%_4" for /l %%? in (1,1,%n%) do (>>"%temp%%t%_4" echo !a%%?!,!b%%?!) cd.>"%temp%%t%_5" set n=0 for /f "skip=1 tokens=1-2 delims=," %%a in ('type "%temp%%t%_4"') do ( set/a n+=1 & set "!n!=%%b" if defined !n! (set "dd=%%b") else (set "dd=%%a") >>"%temp%%t%_5" echo !dd! ) set n=0 for /f "tokens=*" %%? in ('type "%temp%%t%_5"') do (set /a n+=1 & set "d!n!=%%?") if not defined d1 (call :error "获取物理网卡型号失败,请确认你已经安装好了物理网 卡及已以及已经正常驱动" & goto :eof) if !n! GTR 1 ( :xz_nd cls echo. echo. echo. echo _________________________________________________________________ echo. for /l %%? in (1,1,!n!) do ( echo %%? : !d%%?! ) echo. echo _________________________________________________________________ set/p= 请输入你要设置的网卡的序号: set/p "v= " for /l %%? in (1,1,!n!) do (if ^!v!==^%%? set "description=!d%%?!") if not defined description goto :xz_nd ) else (set "description=!d1!") :loop if "*!description:~-1!"=="* " (set "description=!description:~0,-1!") else (goto :loop_end) goto :loop :loop_end ::利用网卡型号来得到网卡的mac address和index echo 获取网卡mac地址中... nicconfig where "Description like '!Description!'" get index,MACAddress 2>nul |findstr ":" >"%temp%%t%_3" findstr . "%temp%%t%_3" >nul 2>nul || ( nicconfig where "Description like '!Description! - 数据包计划程序 微型端口'" get index,MACAddress 2>nul |findstr ":" >"%temp%%t%_3" ) for /f "tokens=1-2 delims= " %%a in ('type "%temp%%t%_3"') do (set "index=%%a" & set "mac_address=%%b") if not defined mac_address (call :error "获取物理网卡!description! mac地址失败" & goto :eof) ::开始备份现有配置到一文件 echo 正在备份当前ip信息... start /wait /min wmic.exe /OUTPUT:"backup_!mac_address!.log" nicconfig where "index='!index!'" ::########################## :setp2 cls type "%datebase%" | findstr /i /b "%mac_address%" >nul 2>nul ||(set "mac_address=%mac_address::=-%") ::根据%database%来匹配mac address来得到需要设置的ip信息 for /f "eol=; tokens=1-10 delims= " %%a in ('"type "%datebase%" | findstr /i /b "%mac_address%" 2>nul"') do ( set "hostname=%%b" set "workgroup=%%c" set "enabledhcp=%%d" set "addr=%%e" set "mask0=%%f" set "gateway=%%g" set "dns_primary=%%h" set "dns_second=%%i" ) if not defined hostname (call :error "数据库中没有此mac address : %mac_address% , 请联系管理员" & goto :eof) ::如果mask设置为标准,那么这里根据网段来计算得到mask if "*%mask0%"=="*standard" ( if %addr% LEQ 128 (set "mask=255.0.0.0") else ( if %addr% LEQ 192 (set "mask=255.255.0.0") else ( if %addr% LEQ 223 (set "mask=255.255.255.0") else ( call :error "网段只可以设置为A类、B类、C类" & goto :eof ) ) ) ) else (set "mask=%mask0%") echo. echo. echo. echo 准配置信息如下 echo _________________________________________________________________ echo. echo hostname : !hostname! echo workgroup : !workgroup! echo. echo Description : !Description! echo Physical Address : !mac_address! echo Dhcp Enabled : !enabledhcp! if "*!enabledhcp!"=="*0" ( echo IP Address : !addr! echo Subnet Mask : !mask! echo Default Gateway : !gateway! echo DNS Servers : !dns_primary! echo !dns_second! ) echo. echo _________________________________________________________________ echo. set/p= 按y键确认开始配置: sc /? | findstr "32" >nul 2>nul || (exit /b) ::########################## :setp3 cls echo. echo. echo. echo 开始配置各信息 echo _________________________________________________________________ echo. ::如enabledhcp为1设置为动态ip,如为0就设置静态ip set "error=" if "*%enabledhcp%"=="*1" (call :enabledhcp) else (call :disabledhcp) if not "*!workgroup!"=="*none" ( set/p= 修改工作组中... start /wait /min wmic /RECORD:"%temp%%t%_11" computersystem where "name='%COMPUTERNAME%'" call joindomainorworkgroup "","","!workgroup!",1 type "%temp%%t%_11" | findstr /i "ReturnValue = 0;$" >nul 2>nul && (echo ok) || (echo no & set "error=error") ) if not "*!hostname!"=="*none" ( set/p= 修改计算机名中... start /wait /min wmic /RECORD:"%temp%%t%_12" computersystem where "name='%COMPUTERNAME%'" rename "!hostname!" type "%temp%%t%_12" | findstr /i "ReturnValue = 0;$" >nul 2>nul && (echo ok) || (echo no & set "error=error") ) echo _________________________________________________________________ echo. if not defined error ( del /f/q/a "%temp%%t%_*" >nul 2>nul echo 设置全部修改成功 ping -n 5 127.1 >nul 2>nul ) else (call :error "一些设置没有成功,请检查" & goto :eof) exit /b goto :eof ::call::::::::::::::::::::::::::::::: :error for /l %%? in (1,1,10) do (echo %~1 &ping -n 3 127.1 >nul 2>nul) exit /b :: :enabledhcp set/p= 设置为自动获取中... start /wait /min wmic /RECORD:"%temp%%t%_13" path Win32_NetworkAdapterConfigurati=!index! call enabledhcp type "%temp%%t%_13" | findstr /i "ReturnValue = 0;$" >nul 2>nul && (echo ok) || (echo no & set "error=error") goto :eof :: :disabledhcp set/p= 设置ip地址中... start /wait /min wmic /RECORD:"%temp%%t%_14" nicconfig where "index='!index!'" call enablestatic "!addr!","!mask!" type "%temp%%t%_14" | findstr /i "ReturnValue = 0;$" >nul 2>nul && (echo ok) || (echo no & set "error=error") if not "*!gateway!"=="*none" ( set/p= 设置网关中... start /wait /min wmic /RECORD:"%temp%%t%_15" nicconfig where "index='!index!'" call setgateways "!gateway!",1 type "%temp%%t%_15" | findstr /i "ReturnValue = 0;$" >nul 2>nul && (echo ok) || (echo no & set "error=error") ) if not "!dns_primary!"=="none" if "!dns_second!"=="none" ( set/p= 设置主dns中... start /wait /min wmic /RECORD:"%temp%%t%_16" nicconfig where "index='!index!'" call setdnsdomain "'!dns_primary!'" start /wait /min wmic /RECORD:"%temp%%t%_17" nicconfig where "index='!index!'" call SetDNSServerSearchOrder "'!dns_primary!'" type "%temp%%t%_17" | findstr /i "ReturnValue = 0;$" >nul 2>nul && (echo ok) || (echo no & set "error=error") ) if "!dns_primary!"=="none" if not "!dns_second!"=="none" ( set/p= 设置辅dns中... start /wait /min wmic /RECORD:"%temp%%t%_16" nicconfig where start /wait /min wmic /RECORD:"%temp%%t%_17" nicconfig where "index='!index!'" call setdnsdomain "'!dns_second!'" "index='!index!'" call SetDNSServerSearchOrder "'!dns_second!'" type "%temp%%t%_17" | findstr /i "ReturnValue = 0;$" >nul 2>nul && (echo ok) || (echo no & set "error=error") ) if not "!dns_primary!"=="none" if not "!dns_second!"=="none" ( set/p= 设置主辅dns中... start /wait /min wmic /RECORD:"%temp%%t%_16" nicconfig where start /wait /min wmic /RECORD:"%temp%%t%_17" nicconfig where call SetDNS"index='!index!'" ServerSearchOrder "index='!index!'" call setdnsdomain ^("!dns_primary!","!dns_second!"^) ^("!dns_primary!","!dns_second!"^) type "%temp%%t%_17" | findstr /i "ReturnValue = 0;$" >nul 2>nul && (echo ok) || (echo no & set "error=error") ) goto :eof :: 学校机房 00-13-D3-3C-CB-27 ST01 workgroup 0 192.168.1.101 255.255.255.0 192.168.1.1 61.153.177.196 61.153.177.197 00-13-D3-3C-CD-F7 ST02 workgroup 0 192.168.1.102 255.255.255.0 192.168.1.1 61.153.177.196 61.153.177.197


发布评论