不受 网卡驱动、网络连接名、物理网卡的个数 的限制,自定义修改灵活
Download ( 710 downloads)
Download ( 411 downloads)
一些错误信息的解决方法:
1、C:\>wmic path win32_pnpsigneddriver
节点 - s-151
错误:
描述 = 提供程序加载失败
解决方法:是msinfo.dll没有注册的问题,www.zhaodll.com上下载一个msinfo.dll复制到"%SystemRoot%\pchealth\helpctr\binaries\"目录重新注册下就ok 了
2、C:\>wmic path win32_pnpsigneddriver
错误:
代码 = 0x8007007e
说明 = 找不到制定的模块
设备 = win32
解决方法:暂时未知
网上一段说明
auto_set_ip_v1.7.cmd代码
@echo off & SETLOCAL ENABLEDELAYEDEXPANSION
:::::::::::::::::::::::::::::::::::::::::::::::::::
::auto_set_ip_v1.7.cmd
::根据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=ip.txt"
::如果要把数据库存放在本脚本内就把下面这行 ::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-1E-90-79-7F-E3 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_v1.6.cmd
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 http://www.vkill.net
echo _________________________________________________________________
set/p= 3秒后继续...<nul
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 部分错误信息参见http://bbs.wglm.net/read.php?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= 请输入你要设置的网卡的序号:<nul
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地址中...
wmic.exe nicconfig where "Description like '!Description!'" get index,MACAddress 2>nul |findstr ":" >"%temp%\%t%_3"
findstr . "%temp%\%t%_3" >nul 2>nul || (
wmic.exe 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键确认开始配置: <nul
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= 修改工作组中...<nul
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= 修改计算机名中...<nul
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= 设置为自动获取中...<nul
start /wait /min wmic /RECORD:"%temp%\%t%_13" path Win32_NetworkAdapterConfiguration.index=!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地址中...<nul
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= 设置网关中...<nul
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中...<nul
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中...<nul
start /wait /min wmic /RECORD:"%temp%\%t%_16" nicconfig where "index='!index!'" call setdnsdomain "'!dns_second!'"
start /wait /min wmic /RECORD:"%temp%\%t%_17" nicconfig where "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中...<nul
start /wait /min wmic /RECORD:"%temp%\%t%_16" nicconfig where "index='!index!'" call setdnsdomain ^("!dns_primary!","!dns_second!"^)
start /wait /min wmic /RECORD:"%temp%\%t%_17" nicconfig where "index='!index!'" call SetDNSServerSearchOrder ^("!dns_primary!","!dns_second!"^)
type "%temp%\%t%_17" | findstr /i "ReturnValue = 0;$" >nul 2>nul && (echo ok) || (echo no & set "error=error")
)
goto :eof
::
Last modified by vkill on2008/07/09 18:39
Download ( 710 downloads)
Download ( 411 downloads)一些错误信息的解决方法:
1、C:\>wmic path win32_pnpsigneddriver
节点 - s-151
错误:
描述 = 提供程序加载失败
解决方法:是msinfo.dll没有注册的问题,www.zhaodll.com上下载一个msinfo.dll复制到"%SystemRoot%\pchealth\helpctr\binaries\"目录重新注册下就ok 了
2、C:\>wmic path win32_pnpsigneddriver
错误:
代码 = 0x8007007e
说明 = 找不到制定的模块
设备 = win32
解决方法:暂时未知
网上一段说明
Quotation
http://forums.microsoft.com/china/ShowPost.aspx?PostID=1971041&SiteID=15
出现 error 0x8007007e消息
原因:通常是因为系统中的Urlmon.dll文件和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.
下载链接为: http://www.microsoft.com/downloads/details.aspx?FamilyId=B1AD2C0A-8CC6-443B- AB83-F8516C72FAC1&displaylang=en
出现 error 0x8007007e消息
原因:通常是因为系统中的Urlmon.dll文件和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.
下载链接为: http://www.microsoft.com/downloads/details.aspx?FamilyId=B1AD2C0A-8CC6-443B- AB83-F8516C72FAC1&displaylang=en
auto_set_ip_v1.7.cmd代码
@echo off & SETLOCAL ENABLEDELAYEDEXPANSION
:::::::::::::::::::::::::::::::::::::::::::::::::::
::auto_set_ip_v1.7.cmd
::根据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=ip.txt"
::如果要把数据库存放在本脚本内就把下面这行 ::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-1E-90-79-7F-E3 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_v1.6.cmd
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 http://www.vkill.net
echo _________________________________________________________________
set/p= 3秒后继续...<nul
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 部分错误信息参见http://bbs.wglm.net/read.php?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= 请输入你要设置的网卡的序号:<nul
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地址中...
wmic.exe nicconfig where "Description like '!Description!'" get index,MACAddress 2>nul |findstr ":" >"%temp%\%t%_3"
findstr . "%temp%\%t%_3" >nul 2>nul || (
wmic.exe 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键确认开始配置: <nul
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= 修改工作组中...<nul
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= 修改计算机名中...<nul
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= 设置为自动获取中...<nul
start /wait /min wmic /RECORD:"%temp%\%t%_13" path Win32_NetworkAdapterConfiguration.index=!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地址中...<nul
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= 设置网关中...<nul
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中...<nul
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中...<nul
start /wait /min wmic /RECORD:"%temp%\%t%_16" nicconfig where "index='!index!'" call setdnsdomain "'!dns_second!'"
start /wait /min wmic /RECORD:"%temp%\%t%_17" nicconfig where "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中...<nul
start /wait /min wmic /RECORD:"%temp%\%t%_16" nicconfig where "index='!index!'" call setdnsdomain ^("!dns_primary!","!dns_second!"^)
start /wait /min wmic /RECORD:"%temp%\%t%_17" nicconfig where "index='!index!'" call SetDNSServerSearchOrder ^("!dns_primary!","!dns_second!"^)
type "%temp%\%t%_17" | findstr /i "ReturnValue = 0;$" >nul 2>nul && (echo ok) || (echo no & set "error=error")
)
goto :eof
::
Last modified by vkill on2008/07/09 18:39
网友评论(1):
lakex
2008/11/22 09:41
如果再将程序修改一下,使用其可以自启动,自运行,自删除就非常棒了,,
Pages: 1/1
1
1


