[BATCH] An example of re-booting cycling with traces tracking down

An overview of reboot cycling script.

A top directory called rebooter designed by user

A sub-directory call Reboot

 1. Reboot_run.bat =>this is a startup script used for full script copying from current dictionary to c:\reboot

1 @echo off
2 set ROOT_DIR=%~dp0
3 set TOOL_SRC=%ROOT_DIR%
4 set TOOL_DES=C:\
5 xcopy %TOOL_SRC%\reboot\* %TOOL_DES%\Reboot\ /e /i /y
6 Start %TOOL_DES%\reboot\begin.bat

2. begin.bat => do some initialization including desired interation inputed by user, startup.bat registering at
HKLM\Software\Microsoft\Windows\CurrentVersion\Run so that this can be boot up while system powering up.

 1 @echo off
 2 set REG=C:\reboot\Enable_Autorun.reg
 3 
 4 :begin
 5 @set /p reboot= How many reboot cycles do you need:
 6 if %reboot% LSS 0 (@echo Please enter a value greater than or equal to 0) else (goto :continue)
 7 if %reboot% LSS 0 (goto :begin)
 8 
 9 :continue
10 @echo You Have selected it to reboot for %reboot% times >>c:\reboot\reboot.log
11 @echo ------------------------------------------------- >>c:\reboot\reboot.log
12 @echo %reboot% >c:\reboot\counter.txt
13 copy c:\reboot\counter.txt c:\reboot\count.txt /y
14 
15 REM REG ADD HKLM\Software\Microsoft\Windows\CurrentVersion\Run /v Reboot /t REG_SZ /d c:\reboot\startup.bat
16 regedit /s %REG%
17 echo y | REG ADD HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0
18 call c:\reboot\startup.bat

3. startup.bat => this is main script used for cycle iteration on invoking fail_result.bat to analyse the logfile each time
and make a judgement on whether the disired cycle is reached up, if so, clearng all log formed inbetween in the course of script execution.

 

 1 set LOG=C:\reboot\reboot.log
 2 set CNT=C:\reboot\counter.txt
 3 set CNTCOPY=c:\reboot\count.txt
 4 set SEC=20
 5 
 6 REM counter counter decrease as rebooting action performing
 7 set /p counter=<%CNT%
 8 set /a counter=%counter%-1
 9 REM count increment for reboot cycling tracking down.
10 set /p count=<%CNTCOPY%
11 set /a count=(%count%-%counter%)
12 echo %counter% >%CNT%
13 
14 if %counter% LEQ -1 (goto :cleanup) else (goto :restart)
15 :restart
16 echo waiting for 20 sec for reboot cycling
17 @timeout %SEC% >nul
18 cd /d c:\reboot
19 echo. >> result.txt
20 echo Time stamp at %count% reboots: %date% %time% >>result.txt
21 echo Time stamp at %count% reboots: %date% %time% >>%LOG%
22 devcon.exe status * > devinfo.txt
23 call C:\reboot\fail_result.bat
24 shutdown -r -t 0 -f
25 goto :end
26 :cleanup
27 c:\reboot\cleanup.cmd
28 :end

4. fail_result.bat

 1 @echo off
 2 setlocal enabledelayedexpansion
 3 REM devcon.exe status * >devinfo.txt
 4 for /f "delims=: tokens=1,*" %%i in ('findstr /n /c:"Device has a problem" devinfo.txt') do (
 5     echo %%j>>result.txt
 6     set  flag=1
 7     set  line=%%i
 8     call :twoline 
 9 )
10 goto :eof
11 
12 :twoline
13     set /a line=line-1
14     for /f "tokens=1,* delims=:" %%i in ('findstr /n .* devinfo.txt') do (
15     if  %line% equ %%i  (
16     echo %%j>>result.txt 
17 
18     if %flag% ==1 (
19         set flag=0
20         goto :twoline
21         )   else (goto :eof)
22     
23 
24 )
25 )

5. cleanup.cmd

 1 @echo off
 2 
 3 set REG=C:\reboot\disable_Autorun.reg
 4 regedit /s %REG%
 5 
 6 del /q c:\reboot\count.txt
 7 del /q c:\reboot\counter.txt
 8 
 9 echo y | REG ADD HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 1
10 echo please enter any key to complete cleanup.
11 pause 1>nul

6. Disable_Autorun.reg

1 Windows Registry Editor Version 5.00
2 
3 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
4 "rebooter"="C:\\reboot"

7. Enable_Autorun.reg

1 Windows Registry Editor Version 5.00
2 
3 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
4 "Rebooter"="C:\\Reboot\\Startup.bat"

 

posted @ 2014-01-10 14:39  Yu Zi  阅读(293)  评论(0编辑  收藏  举报