中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求助!如何改这批处理实现不同计算机号写入指定网关
作者:
标题: 求助!如何改这批处理实现不同计算机号写入指定网关 上一主题 | 下一主题
capcom881
新手上路





积分 11
发帖 5
注册 2006-11-21
状态 离线
『楼 主』:  求助!如何改这批处理实现不同计算机号写入指定网关

注:这个批处理来自网络上!
在批处理文件的旁边在建一个 “config.ini ” 文件。
                  内容:
              -----------------------------------------------------------------
                [ComputerName]      
                  NH005            
                  NH006            
                  NH007
                  NH008            
                  NH009
            ------------------------------------------------------------------
                  粘贴到“记事本” 里, 另保存为 “config.ini ” 文件.
                    注意:字母一定要大写!
               
            在批处理文件“GameUpdate.bat” 最后一行
              
                  写上:
            ----------------------------------------------------------------------------------------------------------
            for /f "skip=1 tokens=1" %%N IN (\\FilmServer\GameUpdate\Config.ini)
            Do if %ComputerName%==%%N (
                  xcopy /s /e /d /y   \\FilmServer\GameUpdate\劲乐团         
            D:\Games\劲乐团      xcopy /s /e /d /y   \\FilmServer\GameUpdate\dhxy   
                  D:\Games\dhxy
                  xcopy /s /e /d /y   \\FilmServer\GameUpdate\"Legend of Mir"   
            D:\Games\"Legend of Mir"
                  ) Else (
                @echo 本台机器今天不更新!
                  )
                Exit

如何修改上面的批处理实现根据机号改网关,如读取config.ini 文件内有 NH005 这个机号就执行这行命令netsh i i set address name="本地连接" gateway=192.168.0.254 gwmetric=0

2006-12-4 07:08
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
youxi01
高级用户




积分 846
发帖 247
注册 2006-10-27
来自 湖南==》广东
状态 离线
『第 2 楼』:  

楼上的批处理貌似有点问题:即使那台机器要更新,如:NH007 ,但是它照样要提示不更新哦!

要检测本机是否需要更新,可以使用findstr 啊!
如:
findstr " %ComputerName%" "\\FilmServer\GameUpdate\Config.ini">nul && netsh set address name.........

2006-12-4 10:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
capcom881
新手上路





积分 11
发帖 5
注册 2006-11-21
状态 离线
『第 3 楼』:  



  Quote:
Originally posted by capcom881 at 2006-12-3 06:08 PM:
注:这个批处理来自网络上!
在批处理文件的旁边在建一个 “config.ini ” 文件。
                  内容:
              -------------------------------------------- ...

findstr " %ComputerName%" "c:\Config.ini">nul &&netsh interface ip set address name="本地连

接" gateway=192.168.0.254 gwmetric=0

我把路径改了C:\Config.ini
或按你原来的也是一样一闪而过,没有根据Config.ini里的计算机名去改网关
我自己刚学批处理,这也是在网上找来的,望这位人兄帮忙想想办法,在这先谢过了

2006-12-4 14:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tghksj
社区乞丐

此图片另存后死机



积分 -49
发帖 90
注册 2006-12-2
状态 离线
『第 4 楼』:  

我前天写的,不知道对你有没有用.

@ECHO OFF
CLS
ECHO "TGHKSJ.CMD" 版本20061130(以日期为版本号) 作者:tghksj 地址:http://w.vicp.net

setlocal

:VERSION
ver | find /i "Windows XP" > nul
IF NOT errorlevel 1 GOTO :START
ECHO.
ECHO.
ECHO 此程序只在Windows XP操作系统下测试通过.
ECHO 其他版本不能保证正常运行.
GOTO :QUIT

:START
IF NOT "%~1"=="%*"     GOTO :SYNTAX
IF /I "%~1"=="/l"      GOTO :LIST
IF /I "%~1"=="/s"      GOTO :SET
                       GOTO :HELP

:SYNTAX
echo.
echo.
echo  !!参数错误!!
echo  ________________
echo  不带参数直接运行本程序将显示帮助信息,并按提示操作.
echo.
GOTO :HELP

::::::::::获取MAC IP NAME并保存::::::::::::::::::::::::::::::::::::::::::::::::::↓
:LIST
Find "%COMPUTERNAME%" "%~dp0"CONFIG.txt > NUL
IF %errorlevel% == 0  GOTO :HAVELIST
FOR /F "usebackq eol=; tokens=2 delims=:" %%I in (`ipconfig /all^|find /i "Physical Address"`) do set MAC=%%I
FOR /F "usebackq eol=; tokens=2 delims=:" %%I in (`ipconfig /all^|find /i "IP Address"`) do set IP=%%I
FOR /F "usebackq eol=; tokens=2 delims=:" %%I in (`ipconfig /all^|find /i "Subnet Mask"`) do set MASK=%%I
FOR /F "usebackq eol=; tokens=2 delims=:" %%I in (`ipconfig /all^|find /i "Default Gateway"`) do set GATEWAY=%%I
FOR /F "usebackq eol=; tokens=2 delims=:" %%I in (`ipconfig /all^|find /i "DNS Servers"`) do set DNS1=%%I
FOR /F "skip=19 tokens=1 usebackq"  %%I in (`ipconfig /all`) do set DNS2=%%I
ECHO %MAC% %COMPUTERNAME% %IP% %MASK% %GATEWAY% %DNS1%  %DNS2%>>%~dp0CONFIG.txt
IF /I "%~1"=="/l" EXIT
ECHO 信息收集完毕并保存到 %~dp0CONFIG.txt
GOTO :QUIT
::::::::::获取MAC IP NAME并保存::::::::::::::::::::::::::::::::::::::::::::::::::↑



:::::::::::::::::::::::::::::::::::::::::::::::::::::CONFIG.txt::::::示例::::::::↓
::::%%I                    %%j                  %%k             %%l                %%m             %%n             %%o
::::MAC                    COMPUTERNAME         IP              MASK               GATEWAY         DNS1            DNS2
::::00-E0-4C-49-83-A9      t21                  222.173.24.66   255.255.255.192    222.173.24.65   219.146.0.130   219.150.32.132
:::::::::::::::::::::::::::::::::::::::::::::::::::::CONFIG.txt::::::示例::::::::↑





:::::识别MAC,并据此进行继续操作::::::::::::::::::::::::::::::::::::::::::::::::::↓
:SET
FOR /F "usebackq eol=; tokens=2 delims=:" %%I in (`ipconfig /all^|find /i "Physical Address"`) do set MAC=%%I
find /i "%MAC%" "%~dp0CONFIG.txt" > NUL
IF %errorlevel% == 1  GOTO :NO_LIST
FOR /F "tokens=2,3,4,5,6,7" %%j in ('find /i "%MAC%" "%~dp0CONFIG.txt"') do (
                                                   SET TCOMPUTERNAME=%%j
                                                   SET IP=%%k
                                                   SET MASK=%%l
                                                   SET GATEWAY=%%m
                                                   SET DNS1=%%n
                                                   SET DNS2=%%o
                                                                             )
REG ADD HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v "Hostname"    /t REG_SZ /d %TCOMPUTERNAME% /f
REG ADD HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v "NV Hostname" /t REG_SZ /d %TCOMPUTERNAME% /f
netsh interface ip set address name="本地连接" source=static addr=%IP% mask=%MASK% gateway=%GATEWAY% gwmetric=1
netsh interface ip set dns name="本地连接" source=static addr=%DNS1% register=both
netsh interface ip add dns name="本地连接" addr=%DNS2%
GOTO :SHUTDOWN
:::::识别MAC,并据此进行继续操作::::::::::::::::::::::::::::::::::::::::::::::::::↑



:::::::::::::::::::::::重新启动计算机::::::::::::::::::::::::::::::::::::::::::::↓
:SHUTDOWN
IF /I "%~1"=="/s"  GOTO :SHUT_Y
GOTO :SHUT_W

:SHUT_Y
shutdown -r -t 0
EXIT

:SHUT_W
echo.
echo  提示:
echo  信息设置完毕.建议按"R"重新启动.(推荐!)
echo  -------------------------------
set /P CHS= [  按"R"键重新启动    按"Q"键退出程序  ]?
if /I "%CHS%"=="R" goto :SHUT_Y
if /I "%CHS%"=="Q" goto :QUIT
CLS
goto :SHUT_W

:::::::::::::::::::::::重新启动计算机::::::::::::::::::::::::::::::::::::::::::::↑


:::::::::::::::::::::::帮助信息和手动选择::::::::::::::::::::::::::::::::::::::::↓
:HELP
echo.
echo                                 -= 帮助 =-
echo ------------------------------------------------------------------
echo.
echo  可用参数:
echo.
echo    /help   显示此帮助信息.
echo    /l      收集客户端信息.信息包括MAC地址、计算机名、IP、子网掩码、网关、DNS。
echo    /s      自动设置客户机MAC地址、计算机名、IP、子网掩码、网关、DNS。
echo.
echo  使用方法:   
echo    任选一台主机为服务器,服务器任意路径新
echo    建任意名文件夹设置"完全共享",存放此程序.
echo  收集信息时客户机执行:
echo     \\服务器名\本程序所在文件夹共享名\TGHKSJ.CMD /l
echo  更改可户端客户机执行:
echo     \\服务器名\本程序所在文件夹共享名\TGHKSJ.CMD /s
echo  或者手动执行此程序,按提示操作。
echo.
echo  -----------------------------------------------------------------
set /P CHS= [  按"L"键收集信息    按"S"键设置信息   按"Q"键退出程序  ]?
if /I "%CHS%"=="L" goto :LIST
if /I "%CHS%"=="S" goto :SET
if /I "%CHS%"=="Q" goto :QUIT
CLS
goto :HELP
:::::::::::::::::::::::帮助信息和手动选择::::::::::::::::::::::::::::::::::::::::↑

:::::::::::::::::::::::重复收集提示::::::::::::::::::::::::::::::::::::::::::::::↓
:HAVELIST
IF /I "%~1"=="/l" EXIT
ECHO.
ECHO.
ECHO.
ECHO 提示:
ECHO 本机信息先前已经收集过.
ECHO.
GOTO :HELP
:::::::::::::::::::::::重复收集提示::::::::::::::::::::::::::::::::::::::::::::::↑

:::::::::::::::::::::::无信息记录提示::::::::::::::::::::::::::::::::::::::::::::↓
:NO_LIST
IF /I "%~1"=="/S" EXIT
ECHO.
ECHO.
ECHO.
ECHO 提示:
ECHO 没有找到本机信息记录
ECHO 请检查%~dp0CONFIG.txt.
ECHO.
GOTO :HELP
:::::::::::::::::::::::无信息记录提示::::::::::::::::::::::::::::::::::::::::::::↑

:::::::::::::::::::::::提示退出::::::::::::::::::::::::::::::::::::::::::::::::::↓
:QUIT
echo            ________________________________________________________
echo.
echo                              http://w.vicp.net
echo            ________________________________________________________
echo                                [按任意键退出]
echo             ------------------------------------------------------
echo.
if /I "%1"=="" pause>NUL
:::::::::::::::::::::::提示退出::::::::::::::::::::::::::::::::::::::::::::::::::↑

   此帖被 +5 点积分      点击查看详情   
评分人:【 redtek 分数: +5  时间:2006-12-4 21:04


2006-12-4 14:49
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
capcom881
新手上路





积分 11
发帖 5
注册 2006-11-21
状态 离线
『第 5 楼』:  

在这先谢过了,太复杂我看不明,我才刚开始学习批处理,很多地方都没搞清楚!我只是想用简单几段命令读取Config.ini里写的计算机号,然后相同就执行写网关的命令!

2006-12-4 14:58
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tao0610
高级用户

朦胧的世界


积分 579
发帖 218
注册 2006-10-24
状态 离线
『第 6 楼』:  

你上面的应该是一条命令断开了!
@echo off
findstr "\<%ComputerName%\>" "c:\Config.ini">nul&&goto 设置||echo 计算机名不对应!
pause>nul&goto :eof

:设置
netsh interface ip set address name="本地连接" gateway=192.168.0.254 gwmetric=0 >nul
echo/重新设置了网关!&pause>nul
[ Last edited by tao0610 on 2006-12-4 at 03:51 PM ]




认识自己,降伏自己,改变自己
,才能改变别人!
2006-12-4 15:34
查看资料  发短消息 网志   编辑帖子  回复  引用回复
capcom881
新手上路





积分 11
发帖 5
注册 2006-11-21
状态 离线
『第 7 楼』:  

上面的都试过了~是不是windows2003系统执行无效呢~不解中!

2006-12-4 18:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: