我这里网吧应用还原卡, 所以游戏需要1太1台的更新 , 我现在用开机批处理更新 ,更新文件在电影的服务器上 .我每次更新时开4到5台 看他更新完 ,关机保存本来没什么不好。。。 后来我越来越懒 又更改批处理 一下把所有的机器都开开 开始更新4台 后来完成一台 另一台自动开始 。可是所有的都更新完也很费工夫 ,又把音乐做成另一个服务器让它自动分配到电影和音乐 ,一边分一个 , 可是又有问题 电影和音乐 的配置不一样, 造成更新速度不一样总之, 代码有问题... 而且是好几个批处理完成 我没法给他综合到一起.. 最后只能让大家帮我参谋下了 .
客户机 开机启动 updata3.bat
@call \\dianying2\游戏\更新纪录\updata3.bat
@echo off
if exist ipconfig.txt del ipconfig.txt
ipconfig /all >ipconfig.txt
if exist phyaddr.txt del phyaddr.txt
find "Physical Address" ipconfig.txt >phyaddr.txt
if exist ipaddr.txt del ipaddr.txt
find "IP Address" ipconfig.txt >ipaddr.txt
for /f "skip=2 tokens=12" %%M in (phyaddr.txt) do set strMac=%%M
@echo %strMac%
for /f "skip=2 tokens=15" %%I in (ipaddr.txt) do set IPAddress=%%I
@echo %IPAddress%
arp -d >nul
arp -s %IPAddress% %strMac% >nul
ARP -s xxx.xxx.xxx.1 00-3C-01-xx-xx-xx >nul
::绑ip
start/W C:\WINDOWS\system32\worfiv.cpl
::狼牙借口
call \\dianying2\游戏\更新纪录\123\判断.bat
exit
for /f "" %%N IN (\\dianying2\useru$\123456\Config.ini) Do if %ComputerName%==%%N (
call \\dianying2\游戏\更新纪录\123\分配.bat
) Else (
echo 123
)
::主要为了看这台机器用不用更新
for /f "tokens=*" %%i in (a.txt) do (set /a "str=%%i")
set /A a=%str%+1
set /A b=%str% %%2
echo %a% > a.txt
echo %b%
@if "%b%"=="1" goto mbmbpd
@if "%b%"=="0" goto dianying2pd
:mbmbpd
call \\mbmb\游戏\更新纪录\123\判断连接.bat
exit
:dianying2pd
call \\dianying2\游戏\更新纪录\123\判断连接.bat
exit
::为了分配到dianying2 或者mbmb
(2个连接判断是一样的,就是位置不同)
@echo off
set /A x=0
:oo
for /f "tokens=*" %%i in (\\dianying2\useru$\123456\1.ini) do (set /a "str=%%i")
for /f "tokens=*" %%i in (\\dianying2\useru$\123456\2.ini) do (set /a "str1=%%i")
set /A x=x+1
set /A a=%str%
set /A b=%str1%
set /A c=a-b
if %c% GEQ 3 goto pau
if %c% LEQ 3 goto go
:pau
cls
echo.
echo =================================
echo 第 %x% 次等待 连接数目到达最大
echo 8秒钟后尝试再次连接
echo dianying2队列 请稍后...
echo =================================
@echo %ComputerName% 第 %x% 次等待 连接数目到达最大>> \\dianying2\useru$\123456\报告\等待报告.txt
@echo dianying2纪录 %time% , %date% >> \\dianying2\useru$\123456\报告\等待报告.txt
@echo. >> \\dianying2\useru$\123456\报告\等待报告.txt
ping -n 13 localhost > nul
goto oo
:go
for /f "tokens=*" %%i in (\\dianying2\useru$\123456\1.ini) do (set /a "str2=%%i")
set /A a=%str%+1
echo %a% > \\dianying2\useru$\123456\1.ini
call \\dianying2\游戏\更新纪录\123\更新.bat
exit
@xcopy /s /z /d /y/e/h \\dianying2\游戏\网络游戏\传奇世界 D:\网络游戏\传奇世界 >nul
...
rd /s/q d:\网络游戏\浩方对战平台
start /w \\dianying2\游戏\浩方\浩方对战平台.exe
for /f "tokens=*" %%i in (\\dianying2\useru$\123456\2.ini) do (set /a "str2=%%i")
set /A a=%str2%+1
echo %a% > \\dianying2\useru$\123456\2.ini
exit
主要在
着几个批处理 可不可以简化下... 我实在是没办法了.现在还有个问题
因为dianying2 和mbmb的配置不同,造成排队的机器一多就一个队列先完成另
一个还要半天 我想了想,不应该先分配队列.应该先排队进队列.在分配更新服务器... 应该是这样把 ? 恳请大家帮忙看看... 呼 手疼
ps:执行过程:在updata3棒定mac 连接判断
判断.bat 确定本机是否更新 是 连接分配
分配.bat 根据a.txt里的总数分配到diangying2或者mbmb
连接dianying2或mbmb里的连接判断 同时a.txt
加1
连接判断.bat 读取1.ini和2.ini 数字象减得出现在更新机器
数 大于4排队. 小于连接更新(2台服务器一样的
连接判断和更新)
更新.bat 进入时1.ini加1
各种更新(用xcopy .rar无应答覆盖自解压,不用管这里)
退出2.ini加1
简化或综合到1个批里从4楼的he200377 兄给的思路中已经有启发了
简化方案 6楼zerocq兄 给出判断的简话方案可以综合到updata3里
同时在8楼的代码抛弃了一堆ini ~~~
谢谢了
现在想实现的过成是
updata3:棒定mac 等前期准备 同时判断是否更新(实现),连
接 排队分配.bat
排队分配.bat : 看前方是否有8台机器在更新 ,有的话排队等
戴 ,没有 进入更新队列 , 判断dianying2更新的机器
多还是mbmb多,挑更新机器少的服务器开始更新.
(排队好半可以自己实现 但是怎么在队列里自动分配
到某台服务器 ?)
更新.bat:各种更新
再次感谢您能看完我写的这些 (能看完我罗里罗嗦写完这些就很谢谢您了)
[ Last edited by zhwvip on 2006-10-29 at 06:53 AM ]
客户机 开机启动 updata3.bat
@call \\dianying2\游戏\更新纪录\updata3.bat
@echo off
if exist ipconfig.txt del ipconfig.txt
ipconfig /all >ipconfig.txt
if exist phyaddr.txt del phyaddr.txt
find "Physical Address" ipconfig.txt >phyaddr.txt
if exist ipaddr.txt del ipaddr.txt
find "IP Address" ipconfig.txt >ipaddr.txt
for /f "skip=2 tokens=12" %%M in (phyaddr.txt) do set strMac=%%M
@echo %strMac%
for /f "skip=2 tokens=15" %%I in (ipaddr.txt) do set IPAddress=%%I
@echo %IPAddress%
arp -d >nul
arp -s %IPAddress% %strMac% >nul
ARP -s xxx.xxx.xxx.1 00-3C-01-xx-xx-xx >nul
::绑ip
start/W C:\WINDOWS\system32\worfiv.cpl
::狼牙借口
call \\dianying2\游戏\更新纪录\123\判断.bat
exit
for /f "" %%N IN (\\dianying2\useru$\123456\Config.ini) Do if %ComputerName%==%%N (
call \\dianying2\游戏\更新纪录\123\分配.bat
) Else (
echo 123
)
::主要为了看这台机器用不用更新
for /f "tokens=*" %%i in (a.txt) do (set /a "str=%%i")
set /A a=%str%+1
set /A b=%str% %%2
echo %a% > a.txt
echo %b%
@if "%b%"=="1" goto mbmbpd
@if "%b%"=="0" goto dianying2pd
:mbmbpd
call \\mbmb\游戏\更新纪录\123\判断连接.bat
exit
:dianying2pd
call \\dianying2\游戏\更新纪录\123\判断连接.bat
exit
::为了分配到dianying2 或者mbmb
(2个连接判断是一样的,就是位置不同)
@echo off
set /A x=0
:oo
for /f "tokens=*" %%i in (\\dianying2\useru$\123456\1.ini) do (set /a "str=%%i")
for /f "tokens=*" %%i in (\\dianying2\useru$\123456\2.ini) do (set /a "str1=%%i")
set /A x=x+1
set /A a=%str%
set /A b=%str1%
set /A c=a-b
if %c% GEQ 3 goto pau
if %c% LEQ 3 goto go
:pau
cls
echo.
echo =================================
echo 第 %x% 次等待 连接数目到达最大
echo 8秒钟后尝试再次连接
echo dianying2队列 请稍后...
echo =================================
@echo %ComputerName% 第 %x% 次等待 连接数目到达最大>> \\dianying2\useru$\123456\报告\等待报告.txt
@echo dianying2纪录 %time% , %date% >> \\dianying2\useru$\123456\报告\等待报告.txt
@echo. >> \\dianying2\useru$\123456\报告\等待报告.txt
ping -n 13 localhost > nul
goto oo
:go
for /f "tokens=*" %%i in (\\dianying2\useru$\123456\1.ini) do (set /a "str2=%%i")
set /A a=%str%+1
echo %a% > \\dianying2\useru$\123456\1.ini
call \\dianying2\游戏\更新纪录\123\更新.bat
exit
@xcopy /s /z /d /y/e/h \\dianying2\游戏\网络游戏\传奇世界 D:\网络游戏\传奇世界 >nul
...
rd /s/q d:\网络游戏\浩方对战平台
start /w \\dianying2\游戏\浩方\浩方对战平台.exe
for /f "tokens=*" %%i in (\\dianying2\useru$\123456\2.ini) do (set /a "str2=%%i")
set /A a=%str2%+1
echo %a% > \\dianying2\useru$\123456\2.ini
exit
主要在
着几个批处理 可不可以简化下... 我实在是没办法了.现在还有个问题
因为dianying2 和mbmb的配置不同,造成排队的机器一多就一个队列先完成另
一个还要半天 我想了想,不应该先分配队列.应该先排队进队列.在分配更新服务器... 应该是这样把 ? 恳请大家帮忙看看... 呼 手疼
ps:执行过程:在updata3棒定mac 连接判断
判断.bat 确定本机是否更新 是 连接分配
分配.bat 根据a.txt里的总数分配到diangying2或者mbmb
连接dianying2或mbmb里的连接判断 同时a.txt
加1
连接判断.bat 读取1.ini和2.ini 数字象减得出现在更新机器
数 大于4排队. 小于连接更新(2台服务器一样的
连接判断和更新)
更新.bat 进入时1.ini加1
各种更新(用xcopy .rar无应答覆盖自解压,不用管这里)
退出2.ini加1
简化或综合到1个批里从4楼的he200377 兄给的思路中已经有启发了
简化方案 6楼zerocq兄 给出判断的简话方案可以综合到updata3里
同时在8楼的代码抛弃了一堆ini ~~~
谢谢了
现在想实现的过成是
updata3:棒定mac 等前期准备 同时判断是否更新(实现),连
接 排队分配.bat
排队分配.bat : 看前方是否有8台机器在更新 ,有的话排队等
戴 ,没有 进入更新队列 , 判断dianying2更新的机器
多还是mbmb多,挑更新机器少的服务器开始更新.
(排队好半可以自己实现 但是怎么在队列里自动分配
到某台服务器 ?)
更新.bat:各种更新
再次感谢您能看完我写的这些 (能看完我罗里罗嗦写完这些就很谢谢您了)
[ Last edited by zhwvip on 2006-10-29 at 06:53 AM ]
