iT邦幫忙

5

有趣的重開機問題

蟹老闆 2019-07-21 02:25:301013788 瀏覽

有個有趣的問題
提供二個批次檔供參考第一個是XP用,第二個是W7以上版本使用

@Echo off
CLS
SET RegPath="HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /F /V
FOR /F "skip=4 tokens=2*" %%X in ('REG Query "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v DeskTop') do Set DeskTopPath=%%Y
FOR /F "skip=4 tokens=2*" %%I in ('REG Query "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Startup') do Set StartupPath=%%J
If EXIST "%StartupPath%\%~nx0" Goto :RunShutdown
IF "%~dp0" NEQ "%StartupPath%\" (
	Echo.
	Echo 1.執行檔案的位置:%~p0
	Echo 2.開機啟動的位置:%StartupPath%\
	Echo 3.完整的檔案名稱:%~nx0
	Echo.
	Echo 立刻執行反覆開機測試!!!
	Set /P Q=確定請輸入[Y],不執行請按[Enter]:)
IF /I "%Q%" EQU "Y" (
	Copy %0 "%USERPROFILE%\「開始」功能表\程式集\啟動\"
pause
	IF /I "%ERRORLEVEL%" EQU "1" (
	Echo 檔案建立失敗,請手動建立!!!
	Pause
	Exit))
IF /I "%Q%" EQU "" Exit
:MenInfo
Cls
Echo.
Echo 請輸入WINDOWS 登入資訊,若未輸入需要自行登入後才會執行重開機任務。
Echo 若您無需輸入密碼即可登入桌面,請直接按[ENTER]
Echo 目前登入的帳號為:%USERNAME%
Echo.
Set /P PW=請輸入密碼:
Echo.
Echo 您的帳號是:%USERNAME%
Echo 您的密碼是:%PW%
Echo.
Echo 密碼是否正確,正確請按[ENTER],錯誤請輸入[N]...
Set /P As=輸入:
IF /I "%As%" EQU "N" Goto MenInfo
IF "%PW%" EQU "" GOTO RunShutdown
Reg ADD %RegPath% DefaultUserName /t REG_SZ  /d %USERNAME%
Reg ADD %RegPath% AutoAdminLogon /t REG_SZ /d 1
Reg ADD %RegPath% DefaultPassword /t REG_SZ /d %PW%
:RunShutdown
IF NOT EXIST "%DeskTopPath%\Del%~nx0" (
	Echo @Echo OFF > "%DeskTopPath%\Del%~nx0"
	Echo Cls >> "%DeskTopPath%\Del%~nx0"
	Echo Echo. >> "%DeskTopPath%\Del%~nx0"
	Echo Del "%StartupPath%\%~nx0" >> "%DeskTopPath%\Del%~nx0"
	Echo Echo 是否要刪除自動登入的機碼?要刪除請輸入[Y]保留請按[ENTER] >> "%DeskTopPath%\Del%~nx0"
	Echo Set /P QA=請輸入: >> "%DeskTopPath%\Del%~nx0"
	Echo If "%%QA%%" EQU "Y" ^(  >> "%DeskTopPath%\Del%~nx0"
	Echo Reg Delete %RegPath% DefaultUserName >> "%DeskTopPath%\Del%~nx0"
	Echo Reg Delete %RegPath% AutoAdminLogon  >> "%DeskTopPath%\Del%~nx0"
	Echo Reg Delete %RegPath% DefaultPassword >> "%DeskTopPath%\Del%~nx0"
	Echo ^) >> "%DeskTopPath%\Del%~nx0"
	Echo Del ^%%0 >> "%DeskTopPath%\Del%~nx0"
)
Echo.
shutdown -r -f -t 25 -c "  這是由鼎爾資訊所執行的開機測試,若要中斷請在[開始->執行]輸入Shutdown -a,若要停止測試請執行桌面上的Del%~nx0。"
REM 資爾資訊 製作:100.04.01

第一個是XP時代產物,過時的產物就不做說明了,有需要請自行研究。

@Echo Off
Mode con cols=70 lines=15
Title [開機測試] 由鼎爾資訊提供
SetLocal ENABLEDELAYEDEXPANSION
Set Loop=0
Set RunCount=50
Set WaitReboot=5
Set WaitSelect=120
SET RegPath="HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /f /v
Call :ReadValue
If Defined Flag Goto :DisPlay
:Start
Cls
Echo.&Echo.&Echo.
Echo. 	=======自動反覆重開機測試=======
Echo. 	 指定的測試次數為: %RunCount% 次。
Echo. 	 指定等待重開機的時間為: %WaitReboot% 秒。
Echo.
Echo.	*除非你知道如何結束,否則等待時間請勿指定為 0 秒
Echo.	*若你的電腦需要密碼才能登入請先修改為
Echo.	 自動登入,若未修改則需要手動輸入密碼
Echo.	 進入桌後才能繼續。
Echo.
Echo. 	你想要執行什麼動作?
Echo.	若 %WaitSelect% 秒未做出選擇將會退出!
Echo.
Choice /D N /T %WaitSelect% /C YNRTAD /M "開始測試(Y) 離開(N) 測試次數(R) 等待時間(T) 自動登入(A) 停用登入(D)→"
If %ErrorLevel% EQU 1 (
Call :ReadValue
Reg Add HKCU\Software\Microsoft\Windows\CurrentVersion\AutoReboot /f /v Flag /d 1 >Nul
Call :Run
Goto :Reboot
)
Call :%ErrorLevel% Start
:DisPlay
Cls
Echo.&Echo.&Echo.
Echo. 	=======自動反覆重開機測試=======
Echo.	別擔心目前電腦正在執行測試中,你看到的重開機是預期中的行為
Echo. 	測試次數: %RunCount% 次
Echo. 	已進行 %Loop% 次重開機。
Echo. 	等待時間: %WaitReboot% 秒,%WaitReboot% 秒後進行重開機。
Echo. 
Choice /D I /T %WaitReboot% /C ISRT /M "立即重開(I) 終止測試(S) 測試次數(R) 等待時間(T)→"
If %ErrorLevel% EQU 1 (
    Call :ReadValue
    Call :Run
    Goto :Reboot
)
Call :%ErrorLevel% DisPlay
:CheckNum
Cls
Echo !%1!|Findstr [^^0-9]&&(
    Echo. ------------!發生錯誤!------------
    Echo.	 %1 變數發生錯誤!
    Echo.	 只能是數值資料,已重設為:1
    Echo. ------------!發生錯誤!------------
    Set %1=1
    TimeOut /t 5
)
Exit /b
:0
:Reboot
ShutDown -f -r -t 0
Exit
:2
Goto :RegClear
:3
Set /P RunCount=請輸入測試的次數:
Call :CheckNum RunCount
Reg Add HKCU\Software\Microsoft\Windows\CurrentVersion\AutoReboot\ /v RunCount /f /d "!RunCount!"
Goto :%1
:4
Set /P WaitReboot=請輸入重開機前的等待秒數:
Call :CheckNum WaitReboot
Reg Add HKCU\Software\Microsoft\Windows\CurrentVersion\AutoReboot\ /v WaitReboot /f /d "!WaitReboot!"
Goto :%1
:5
Cls
Echo.&Echo.
Echo 若您無需輸入密碼即可登入桌面,請直接按[ENTER]
Echo 請輸入WINDOWS 登入資訊,若未輸入或輸入錯誤將需要自行登入後
Echo 才會執行重開機任務。
Echo 目前登入的帳號為:%USERNAME%
Echo.
Set /P PW=請輸入密碼:
Echo.
Echo 您的帳號是:"%USERNAME%"
Echo 您的密碼是:"%PW%"
Echo.
Echo. 若密碼不正確將無法自動登入系統!!!
Echo 密碼是否正確,正確請按[ENTER],錯誤請輸入[N]...
Set /P As=輸入:
IF /I "%As%" EQU "N" Goto :5
IF "%PW%" EQU "" GOTO :Start
Reg ADD %RegPath% DefaultUserName /t REG_SZ  /d %USERNAME%||Goto Admin
Reg ADD %RegPath% AutoAdminLogon /t REG_SZ /d 1||Goto Admin
Reg ADD %RegPath% DefaultPassword /t REG_SZ /d %PW%||Goto Admin
Goto :%1
:6
Reg Delete %RegPath% DefaultUserName||Goto Admin
Reg Delete %RegPath% AutoAdminLogon||Goto Admin
Reg Delete %RegPath% DefaultPassword||Goto Admin
Echo 自動登入相關資訊已刪除!
Pause
Goto :%1
:ReadValue
For /f "Tokens=1,3 Skip=2" %%i In ('Reg Query  HKCU\Software\Microsoft\Windows\CurrentVersion\AutoReboot\') Do (
    Set %%i=%%j
    Call :CheckNum %%i
)
If !Loop! GEQ !RunCount! Goto :RegClear
Exit /b
:Run
Set /A Loop=!Loop!+1
Set /A TCount=!TCount!+1
Reg Add HKCU\Software\Microsoft\Windows\CurrentVersion\AutoReboot\ /v Loop /f /d !Loop!
Reg Add HKCU\Software\Microsoft\Windows\CurrentVersion\AutoReboot\ /v RunCount /f /d "!RunCount!"
Reg Add HKCU\Software\Microsoft\Windows\CurrentVersion\AutoReboot\ /v WaitReboot /f /d "!WaitReboot!"
Reg Add HKCU\Software\Microsoft\Windows\CurrentVersion\AutoReboot /f /v TCount /d "!TCount!"
Reg Add HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce\ /f /v TestBoot /d "%~f0"
Exit /b
:RegClear
Reg Delete HKCU\Software\Microsoft\Windows\CurrentVersion\AutoReboot /f
Reg Delete HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce\ /f /v TestBoot
Cls
Echo.&Echo.&Echo.
Echo. 	------------自動反覆重開機測試------------
Echo.	1.重開機測試已結束!
Echo. 	2.測試次數: %RunCount% 次
Echo. 	3.已進行 %Loop% 次重開機。
Echo.	4.累計重開機次數: !TCount!
Echo.	5.結束執行時間: %Date% %Time%
Echo.
Echo.	是否要將自動登入相關資訊清除?
Echo.	60 秒未進行選擇將會保留登入。
Choice /D N /T 3 /C YN /M "是(Y) 否(N)→"
If %ErrorLevel% EQU 1 Call :6 EOF
Pause
Exit
:Admin
Md "%SystemRoot%\MdTest" 2>nul&&(
    Rd "%SystemRoot%\MdTest"
    Echo.
    Echo. 提示訊息:
    Echo. 刪除機碼時發生錯誤!可能是該機碼已不存在
    Pause
    Goto :%1
)||(
    Echo.
    Echo. !!提示!!
    Echo 這個操作需要以系統管理者身份進行,
    Echo 請對著檔案以右鍵點選"以系統管理者"重新操作一次
    Choice /C X /M "請按(X)鍵關閉→"
)
Exit

::Author:資爾資訊(Dreamer) DATE:108.07.21

說明:
這是用來執行 ReBoot 的一支批次檔,主要用來執行不斷的重開機,並且可以指定重開的次數及等待多久才進行重開機.
也可以在沒有跑完的指定的次數下暫停執行,已執行的次數會被保留下來,再次執行時會接著執行剩餘的次數。

功能:
Y.以預設值進行反複地重開機
N.不進行測試並刪除登錄檔資料
R.修改要執行的次數
T.修改要等待的時間
A.將系統改為自動登入
D.停用自動登入
I.忽略等待的時間直接重新開機
S.終止測試並刪除登錄檔資訊
直接關閉視窗可暫停測試

其它資訊:
在等待重開機期間可以進行執行次數及等待時間的修改,在等待的期間會顯示將執行的次數及己執行次數,結束後會顯示執行次數及結束的時間並且詢問是否要將自動登入修改回原樣(需要重新執行)。


1 則留言

0
TimHsiao
iT邦新手 5 級 ‧ 2019-07-31 16:28:11

謝謝分享

我要留言

立即登入留言