CODE: [Copy to clipboard]
@echo off
title 全自动加后台。。。依山居19:14 2009-1-22
setlocal enabledelayedexpansion
::计划任务名
set tn=全自动添加后台
::几小时运行一次
set xh=1
::计划运行时间
set st=07:00:00
set tr=%0
::后台路径
set bg=%cd:~0,2%\diguoserver\activeserver
::MINID MAXID差
set /a step=3000
::文件名前缀
set fn=qidian_diguo
::文件夹名过滤,包含特定字符串的文件夹,会被排除
set gl=/c:"1-10000"
::SQL用户名
set user=em
::SQL 密码
set pass=eXBn
::SQL数据库名
set data=em
::数据库服务器地址
set server=192.168.0.229
:start
::判断任务计划服务是否启动
net start|find "Task Scheduler"||goto sctask
::判断计划是否已经添加
schtasks /query|find "%tn%"||goto crtask
del mssqlid.txt
::连接数据库查询最大用户ID,结果写入mssqlid.txt
sqlcmd -S %server% -U %user% -P %pass% -d %data% -Q "select max(id) from player" >mssqlid.txt
::sqlcmd -d %data% -Q "select max(id) from player" >mssqlid.txt
for /f %%a in ('findstr /r /c:"\<[0-9]*[0-9]$" mssqlid.txt') do (
if %%a == "" goto :eof
set /a id=%%a
)
del mssqlid.txt
::查询不到ID,ID=0 退出。
if %id% equ 0 goto :eof
if %id%=="" goto :eof
echo 目前最大的用户ID:%id%
::找出ID最大的后台
for /f "delims=- tokens=1,2" %%i in ('dir /b /a:d %bg%^|findstr /v %gl%') do (
set T=%%i
set /a num=!T:~12!
if !num! GTR !max1! (
set /a max1=!num!
set /a max2=%%j
)
if !num! equ 1 if %%j geq 10000 set /a max2=3000
)
::ID小于MAX1-%step%则退出
set /a tm=%max1%-%step%
if %id% LSS %tm% goto :EOF
::计算需要加多少组后台
set /a x=(%id%-%max1%)/%step%+3
::循环添加X组后台
:loop
set /a x=x-1
if %x% EQU 0 goto :EOF
::找出ID最大的后台
for /f "delims=- tokens=1,2" %%i in ('dir /b /a:d %bg%^|findstr /v %gl%') do (
set T=%%i
set /a num=!T:~12!
if !num! GTR !max1! (
set /a max1=!num!
set /a max2=%%j
)
if !num! equ 1 if %%j geq 10000 set /a max2=3000
)
::算出要添加的后台文件名
set /a newid1=%max1%+%step%
set /a newid2=%max2%+%step%
::把后台ID最大的目录复制成新添加后台目录
xcopy /s /y %bg%\%fn%%max1%-%max2%\*.* %bg%\%fn%%newid1%-%newid2%\
::重命名
ren %bg%\%fn%%newid1%-%newid2%\%fn%%max1%-%max2%.bat %fn%%newid1%-%newid2%.bat
ren %bg%\%fn%%newid1%-%newid2%\%fn%%max1%-%max2%.exe %fn%%newid1%-%newid2%.exe
::生成.bat
echo cd /d %bg%\%fn%%newid1%-%newid2%\>%bg%\%fn%%newid1%-%newid2%\%fn%%newid1%-%newid2%.bat
echo start %fn%%newid1%-%newid2%.exe>>%bg%\%fn%%newid1%-%newid2%\%fn%%newid1%-%newid2%.bat
::修改PUB.xml
fr -ric:"minid=\"[0-9]*\"" -t:"minid=\"%newid1%\"" %bg%\%fn%%newid1%-%newid2%\pub.xml
fr -ric:"maxid=\"[0-9]*\"" -t:"maxid=\"%newid2%\"" %bg%\%fn%%newid1%-%newid2%\pub.xml
::启动后台
::cd /d %bg%\%fn%%newid1%-%newid2%
::start %fn%%newid1%-%newid2%.exe
goto loop
:sctask
:: 设置启动任务计划服务
sc config schedule start= auto
ping 127.0.0.1 -n 3|ECHO>nul
net start schedule
goto start
:crtask
schtasks /create /ru "system" /sc hourly /mo %xh% /st %st% /tn "%tn%" /tr %0
goto start
[