213 lines
4.6 KiB
Batchfile
213 lines
4.6 KiB
Batchfile
@ECHO off
|
|
if defined _echo echo on
|
|
if defined verbose echo on
|
|
|
|
SETLOCAL ENABLEDELAYEDEXPANSION
|
|
|
|
REM raise the remote if not a tsclient
|
|
|
|
set script_name=%0
|
|
|
|
if not exist "%USERPROFILE%\%computername%.ini" goto :EOF
|
|
|
|
for /f "tokens=1,2* delims== " %%f in ('type "%USERPROFILE%\%computername%.ini"') do (
|
|
if /i "%%f" equ "set" (
|
|
set %%g=%%h
|
|
)
|
|
)
|
|
|
|
if not defined __NTDRIVE set __NTDRIVE=d:
|
|
if not defined RemoteStartUpJob set RemoteStartUpJob=@echo.
|
|
|
|
set platform=
|
|
set frechk=
|
|
set TSClient=
|
|
|
|
set default_temp=%tmp:~-1%
|
|
set /a default_temp_bak=%default_temp%+0
|
|
if "%default_temp%" equ "%default_temp_bak%" set TSClient=1
|
|
|
|
:Start
|
|
|
|
call :Win64 %PROCESSOR_ARCHITECTURE%
|
|
call :Free free
|
|
|
|
REM Create UserDefine Remote with UserDefined Arguments
|
|
for /L %%a in (0,1,10) do (
|
|
if defined UserDefined_%%a (
|
|
call :RemoteCreator !UserDefined_%%a!
|
|
)
|
|
)
|
|
|
|
REM Create Remote console
|
|
for %%a in (%ntroot%) do (
|
|
for %%b in (%platforms%) do (
|
|
call :Win64 %%b
|
|
for %%c in (%frechks%) do (
|
|
call :Free %%c
|
|
for %%d in (%consoles%) do (
|
|
call :RemoteCreator %%a %%a_%%b_%%c_%%d %%b %RemoteStartUpJob%
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
goto end
|
|
|
|
REM
|
|
REM Function: RemoteCreator(__NTROOT __ConsoleName __Platform[ __Dosomething1[+__Dosomething2])
|
|
REM Parameter:
|
|
REM __NTROOT - the nt's sdxroot
|
|
REM __ConsoleName - the console name for we create the window
|
|
REM __Platform - x86 or ia64
|
|
REM __DoSomething - Do something inside the remote we created
|
|
REM Return:
|
|
REM none
|
|
REM
|
|
|
|
:RemoteCreator
|
|
if "%3"=="" goto :EOF
|
|
|
|
set consoleexist=
|
|
set __NTROOT=%1
|
|
set __ConsoleName=%2
|
|
set __Platform=%3
|
|
set __DoSomething=%4
|
|
|
|
:AddParameter
|
|
shift /4
|
|
if "%4" neq "" (
|
|
set __DoSomething=!__DoSomething! %4
|
|
goto :AddParameter
|
|
)
|
|
|
|
set __DoSomething=%__DoSomething:+=^&^&%
|
|
|
|
set CreateResult=
|
|
set __RemotePath=%__NTDRIVE%\%__NTROOT%\tools\%PROCESSOR_ARCHITECTURE%\remote.exe
|
|
|
|
call :CheckConsole %__ConsoleName%
|
|
|
|
if not defined __DoSomething set __DoSomething=@echo.
|
|
|
|
if not defined consoleexist (
|
|
if not defined TSClient (
|
|
start /I /min %__RemotePath% /s "cmd /k %__NTDRIVE%\%__NTROOT%\tools\razzle.cmd !platform! !frechk! binaries_dir=d:\%__NTROOT%.binaries postbld_dir=d:\%__NTROOT%.relbins temp=d:\%__NTROOT%.temp.%__Platform% no_title ^&^& title %__ConsoleName% - Remote /c %computername% %__ConsoleName% ^&^& %__DoSomething%" %__ConsoleName% /V /F lyellow /B cyan %Permission%
|
|
set CreateResult=ServerCreated
|
|
) else (
|
|
start /I /min %__RemotePath% /c %computername% %__ConsoleName% /F lyellow /B cyan
|
|
sleep 10
|
|
set CreateResult=ClientCreated
|
|
)
|
|
call :CheckConsole %__ConsoleName%
|
|
) else (
|
|
set CreateResult=RemoteExist
|
|
)
|
|
|
|
if not defined consoleexist (
|
|
if "%CreateResult%" equ "ServerCreated" (
|
|
set CreateResult=ServerFatalError
|
|
echo Server Remote does not create successfully....
|
|
sleep 10
|
|
)
|
|
if "%CreateResult%" equ "ClientCreated" (
|
|
set CreateResult=ServerRemoteUnavailable
|
|
echo Server Remote is not available in this moment....
|
|
call :submitprocess %script_name%
|
|
sleep 10
|
|
)
|
|
if "%CreateResult%" equ "RemoteExist" (
|
|
REM Retry, because the origional is exist...
|
|
goto :RemoteCreator
|
|
)
|
|
)
|
|
|
|
set __DoSomething=
|
|
|
|
goto :EOF
|
|
|
|
REM
|
|
REM Function: Win64(platformname)
|
|
REM Parameter:
|
|
REM %1 - ia64, x86, ...
|
|
REM Return:
|
|
REM set platform to win64 if %1 is ia64 or undef if others.
|
|
REM
|
|
:Win64
|
|
if /i "%1"=="ia64" (
|
|
set platform=Win64
|
|
) else (
|
|
set platform=
|
|
)
|
|
|
|
goto :EOF
|
|
|
|
REM
|
|
REM Function: Free(frechk)
|
|
REM Parameter:
|
|
REM %1 - fre or chk
|
|
REM Return:
|
|
REM set frechk to "free" if is %1 is fre, or undef if is chk.
|
|
REM
|
|
:Free
|
|
if /i "%1"=="fre" (
|
|
set frechk=free
|
|
) else (
|
|
set frechk=
|
|
)
|
|
|
|
goto :EOF
|
|
|
|
REM
|
|
REM Function: CheckConsole(ConsoleName)
|
|
REM Parameter:
|
|
REM ConsoleName - The Title of the cmd console, we can use it to find in tlist.
|
|
REM Return:
|
|
REM consoleexist - set to 1 if exist, or undef if not.
|
|
REM
|
|
:CheckConsole
|
|
|
|
set ConsoleName=%1
|
|
set Consoleexist=
|
|
|
|
for /f "tokens=1 delims=#" %%k in ('tlist') do (
|
|
set TestValue=%%k
|
|
if "!TestValue:%ConsoleName%=!" neq "!TestValue!" (
|
|
set consoleexist=1
|
|
echo Console %ConsoleName% exist....
|
|
)
|
|
)
|
|
if not defined consoleexist echo Console %ConsoleName% not found ...
|
|
|
|
goto :EOF
|
|
|
|
REM
|
|
REM Function: SubmitProcess(ProgramName)
|
|
REM Parameter:
|
|
REM ProgramName - the program we would like to call after 3 minutes in the server
|
|
REM Return:
|
|
REM none
|
|
REM
|
|
:SubmitProcess
|
|
|
|
set ProgramName=%1
|
|
|
|
for /f "tokens=1,2 delims=:." %%k in ('echo %time%') do (
|
|
set myhour=%%k
|
|
set /A mymin=%%l + 3
|
|
if !mymin! gtr 59 (
|
|
set /A mymin-=60
|
|
set /A myhour+=1
|
|
)
|
|
if !myhour! gtr 23 (
|
|
set /A myhour-=24
|
|
)
|
|
)
|
|
|
|
echo Submit remote %1 into server. Should be available at %myhour%:%mymin%.
|
|
AT %myhour%:%mymin% /interactive ""%1""
|
|
|
|
goto :EOF
|
|
|
|
:end
|
|
ENDLOCAL |