Board logo

标题: 修改计算机名\工作组\描述\IP\掩码\网关\DNS的批处理 [打印本页]

作者: exzzz     时间: 2008-2-1 15:50    标题: 修改计算机名\工作组\描述\IP\掩码\网关\DNS的批处理

请高手帮忙,我写的实在是太复杂了,其中有些地方不知道该怎么整的简洁一些,请指教,谢谢!!

已知可以改进的地方:在查询本机信息的时候,可以整合成一个子功能进行调用,但是因为不知道如何 call bat内嵌的代码,所以只好copy了一次。

1、程序目的:我公司给中移动做运营维护,整天有装不完的系统,但是大致分为几类,需要按照一定的规律对计算机进行设置IP,命名等动作。

2、计算机参数设置规律:
计算机IP:
服务厅内网的192开头,根据用途不同,最后一位不同,其他方面IP设置相同。
服务厅业务用机使用10开头的IP,网关不同
工作组规则:根据服务厅拼音全称来设置,例如JINGTIAN
计算机命名规律: 服务厅名字缩写+IP末一位+业务用途 例如 JT-149YW
计算机描述规律:景田服务厅 业务2

3、批处理架构
主程序:修改本机参数.bat 
达到查询、修改以下内容的功能
IP、掩码、网关、DNS、计算机名、工作组、计算机描述、
调用子程序:loadini.bat
达到读取.ini配置文件预设参数的功能
附加程序:生成模板.bat
利用本机配置,生成通用配置文件。方便在其他机器直接调用,不需要手动修改模板文件。

以下是程序内容

★★★★★★★★★★★★★★★★★★★★★★★★★
修改本机参数.bat
echo off
cls
title IP、掩码、网关、计算机名、工作组、计算机描述 简易修改工具  CREATED BY PJH. 080130

if not exist 配置文件 goto err


echo off
cls
echo.
echo   信息收集中,请稍候...

for /f "tokens=3 delims=: " %%a in ('ipconfig ^|findstr "Ethernet"') do set wkname=%%a
for /f "tokens=1-10 delims=:" %%a in ('ipconfig ^|findstr "Address"') do set nip=%%b
for /f "tokens=1-10 delims=:" %%a in ('ipconfig ^|findstr "Mask"') do set nmask=%%b
for /f "tokens=1-10 delims=:" %%a in ('ipconfig ^|findstr "Gateway"') do set ngw=%%b
for /f "tokens=2 delims=:" %%a in ('ipconfig /all ^|findstr "DNS"') do set dns=%%a
for /f "delims=" %%a in ('net config workstation ^|find "工作站域"') do set GZZ=%%a
for /f "delims=" %%a in ('net config server ^|find "服务器注释"') do set miaoshu=%%a


cls
echo.
echo  目前的机器情况如下:
echo.
echo     机名: %computername%
echo   工作组:%gzz:~24,60%
echo     描述:%miaoshu:~25,60%
echo       IP:%nip%
echo     掩码:%nmask%
echo     网关:%ngw%
echo      DNS:%dns%
echo.

:slect
echo  请选择本机用途。
echo.
echo     1、蝌台机
echo     2、后台机
echo     3、网吧机
echo     4、业务展示机
echo     5、蝌台触摸屏
echo.
set /p mycho=     请输入您的选择:
cls
if %mycho%#==1# GOTO :cho%mycho%
if %mycho%#==2# GOTO :cho%mycho%
if %mycho%#==3# GOTO :cho%mycho%
if %mycho%#==4# GOTO :cho%mycho%
if %mycho%#==5# GOTO :cho%mycho%
if %mycho%#==# GOTO slect
goto slect

:cho1
set myuse1=Q
set myuse2=蝌台
call loadini 10cfg.ini
goto setting

:cho2
set myuse1=H
set myuse2=后台
call loadini 10cfg.ini
goto setting

:cho3
set myuse1=WB
set myuse2=网吧
call loadini 192cfg.ini
goto setting

:cho4
set myuse1=YW
echo  请选择本机用途:
echo.
echo     1、飞信
echo     2、手机仿真
echo     3、手机报
echo     4、无限音乐俱乐部
echo.
set /p ywyt=     请输入您的选择:
cls
if %ywyt%#==1# set myuse2=飞信&&goto cho4goon
if %ywyt%#==2# set myuse2=手机仿真&&goto cho4goon
if %ywyt%#==3# set myuse2=手机报&&goto cho4goon
if %ywyt%#==4# set myuse2=无限音乐俱乐部&&goto cho4goon
if %ywyt%#==# GOTO cho4
goto cho4
:cho4goon
call loadini 192cfg.ini
goto setting

:cho5
set myuse1=YW
set myuse2=触摸屏
call loadini 192cfg.ini
goto setting

:setting
echo.
echo  本机IP默认前半截为  %fmyip%  请输入本机IP后半截数字
echo.
set /p ips=
if /I %ips% LEQ 0 (cls&echo 输入错误!&goto setting)
if /I %ips% GEQ 255 (cls&echo 输入错误!&goto setting)

for /f "tokens=2 delims==" %%a in ('findstr "服务厅名" 配置文件\服务厅cfg.ini') do set tname=%%a
for /f "tokens=2 delims==" %%a in ('findstr "服务厅简写" 配置文件\服务厅cfg.ini') do set tjx=%%a
for /f "tokens=2 delims==" %%a in ('findstr "默认工作组" 配置文件\服务厅cfg.ini') do set wkgp=%%a
cls
echo.
echo  请问本机是 %myuse2% 几号? 如果无需编号,则回车即可.
set /p mynum=  
cls
echo.
echo  正在进行设置,请稍等……


wmic computersystem where Name="%COMPUTERNAME%" call JoinDomainOrWorkgroup Name="%wkgp%" >nul 2>nul
wmic computersystem where name="%COMPUTERNAME%" call rename name="%tjx%-%ips%%myuse1%" >nul 2>nul
net config server /srvcomment:"%tname% %myuse2%%mynum%" >nul 2>nul
netsh interface ip set address "%wkname%" static %fmyip%%ips% %fmymask% %fmygw% 1 >nul 2>nul
netsh interface ip delete dns "%wkname%" all >nul 2>nul
netsh interface ip add dns "%wkname%" %dns% 1 >nul 2>nul


echo off
cls
echo.
echo   信息收集中,请稍候...

for /f "tokens=3 delims=: " %%a in ('ipconfig ^|findstr "Ethernet"') do set wkname=%%a
for /f "tokens=1-10 delims=:" %%a in ('ipconfig ^|findstr "Address"') do set nip=%%b
for /f "tokens=1-10 delims=:" %%a in ('ipconfig ^|findstr "Mask"') do set nmask=%%b
for /f "tokens=1-10 delims=:" %%a in ('ipconfig ^|findstr "Gateway"') do set ngw=%%b
for /f "tokens=2 delims=:" %%a in ('ipconfig /all ^|findstr "DNS"') do set dns=%%a
for /f "delims=" %%a in ('net config workstation ^|find "工作站域"') do set GZZ=%%a
for /f "delims=" %%a in ('net config server ^|find "服务器注释"') do set miaoshu=%%a
cls
echo.
echo  目前的机器情况如下:
echo.
echo     机名: %computername%    (重启后才会变化成正确的)
echo   工作组:%gzz:~24,60%
echo     描述:%miaoshu:~25,60%
echo       IP:%nip%
echo     掩码:%nmask%
echo     网关:%ngw%
echo      DNS:%dns%
echo.
echo     修改完毕!按任意键退出程序。


PAUSE >nul 2>nul

exit

:err
echo.
echo.
echo  没有发现配置文件,请先手动设置本机参数再运行 生成本机模板.bat 生成配置信息!
echo.
PAUSE >nul 2>nul
loadini.bat
★★★★★★★★★★★★★★★★★★★★★★★★★
for /f "tokens=2 delims==" %%a in ('findstr "IP前缀" 配置文件\%1') do set fmyip=%%a
for /f "tokens=2 delims==" %%a in ('findstr "默认掩码" 配置文件\%1') do set fmymask=%%a
for /f "tokens=2 delims==" %%a in ('findstr "默认网关" 配置文件\%1') do set fmygw=%%a
for /f "tokens=2 delims==" %%a in ('findstr "DNS" 配置文件\%1') do set dns=%%a
★★★★★★★★★★★★★★★★★★★★★★★★★
生成模板.bat
echo off
MD 配置文件
cls
echo.
echo  正在生成配置文件...
for /f "tokens=3 delims=: " %%a in ('ipconfig ^|findstr "Ethernet"') do set wkname=%%a
for /f "tokens=2 delims=:" %%a in ('ipconfig ^|findstr "Address"') do set nip=%%a
for /f "tokens=2 delims=:" %%a in ('ipconfig ^|findstr "Mask"') do set nmask=%%a
for /f "tokens=2 delims=:" %%a in ('ipconfig ^|findstr "Gateway"') do set ngw=%%a
for /f "delims=" %%a in ('net config workstation ^|find "工作站域"') do set GZZ=%%a

for /f "tokens=2 delims=:" %%a in ('ipconfig /all ^|findstr "DNS"') do set dns=%%a

for /f "delims=" %%a in ('net config server ^|find "服务器注释"') do set miaoshu=%%a
for /f "delims=-" %%a in ("%computername%") do echo 服务厅简写=%%a>配置文件\服务厅CFG.INI
echo 默认工作组=%gzz:~25,60%>>配置文件\服务厅CFG.INI
for /f "delims= " %%a in ("%miaoshu:~25,60%") do echo 服务厅名=%%a>>配置文件\服务厅CFG.INI

echo 默认网关=%ngw%>配置文件\ipCFG.INI
echo 默认掩码=%nmask%>>配置文件\ipCFG.INI
echo DNS=%dns%>>配置文件\ipCFG.INI
for /f "tokens=1-3 delims=." %%a in ("%nip%") do set fstip=%%a&echo IP前缀=%%a.%%b.%%c.>>配置文件\ipCFG.INI
if /i %fstip%==10 (del 配置文件\10cfg.ini /q /f&rename 配置文件\ipCFG.INI 10cfg.ini) else (del 配置文件\192cfg.ini /q /f&rename 配置文件\ipCFG.INI 192cfg.ini)
cls
echo.
echo  操作完毕,请查看文件夹 "配置文件" 下面的文件
echo.
PAUSE
★★★★★★★★★★★★★★★★★★★★★★★★★
服务厅CFG.INI
服务厅简写=CS
默认工作组=CESHIFUWUTING
服务厅名=测试服务厅
★★★★★★★★★★★★★★★★★★★★★★★★★
192cfg.ini
默认网关= 192.200.200.1
默认掩码= 255.255.255.0
DNS=
IP前缀= 192.200.200.
★★★★★★★★★★★★★★★★★★★★★★★★★
10cfg.ini
默认网关= 10.245.17.126
默认掩码= 255.255.255.0
DNS= 10.245.1.2
IP前缀= 10.245.17.
───────────────── 版务记录 ─────────────────
执行:HAT
操作:[2008-12-05]代码加code标签
───────────────── 版务记录 ─────────────────


[ Last edited by HAT on 2008-12-5 at 20:13 ]
作者: exzzz     时间: 2008-2-1 15:53
如果有哪位朋友刚开始接触批处理,想询问其中一些语法的,欢迎提问,我尽力作答。
另请留下email,因为不一定经常有空上网。谢谢!
作者: catms     时间: 2008-6-2 14:13
有点。。。。
太。。。。
强大了
俺用网络流传的改IP脚本
汗。。。。。
作者: pusofalse     时间: 2008-6-2 14:17
感觉有点繁杂的脚本~
作者: exzzz     时间: 2008-12-5 17:17
前些时候好像论坛打不开,就好久没上来了。

今天收到一个网友的邮件询问有关该批处理的几个命令,回复了邮件再上来看看,居然还加分了,可乐了,呵呵。
作者: ktv98     时间: 2008-12-5 21:16
学习了
作者: jia332     时间: 2008-12-11 10:36
感觉很好,顶上去大家共享