|
論壇說明 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
主題工具 | 顯示模式 |
2004-08-13, 04:22 PM | #1 |
榮譽會員
|
使用批次處理自動恢復windows 的服務的啟動狀態
使用批次處理自動恢復windows 的服務的啟動狀態
修正 1 感謝 hitme ,指出 2k reskit的 預設buf太小 ,請使用 xp,2k3 的 sc,可以直接複製到 2k使用。 如果使用 2kres kit 的sc ,請修改 sc query type= service state= all| findstr /r /c:"SERVICE_NAME:" >tmpsrv.txt 為 sc query type= service state= all bufsize= 10000| findstr /r /c:"SERVICE_NAME:" >tmpsrv.txt 2 適應更多的 日期格式 ,日期分隔符為 -\.三種 by lyh728 安裝好windows後,我們經常要對windows進行調節,其中重要的一項就是 關閉不必要的服務,這裡就會產生一個問題: 如果我們的某些服務被錯誤的關閉,而當我們後來發現問題,又找不出是哪一個服務的原因的時候,也許我們就會想要回到以前的正常狀態,然後一個個的關閉服務以便找出問題,可是又記不清每個服務的初始狀態的時候,就很 惱火了。 如果能夠寫一個程序,記錄每個服務的啟動狀態,並可以把系統的服務恢復到該狀態就比較方便了。 我寫了一個bat程序,用於記錄並恢復服務的啟動狀態,使用了sc指令(xp,2k3原有的,2k需要到ms下載) 該程序的優點是 產生的記錄文件是一個批次處理文件,直接執行就可以恢復系統的服務的啟動狀態。產生的記錄文件如下: @echo Restore The Service Start State Saved At 21:44:39.67 2004-08-12 星期四 @pause sc config Alerter start= DISABLED sc config ALG start= DEMAND . . . sc config wuauserv start= DISABLED sc config WZCSVC start= DISABLED @pause 下面是bat的程式碼,存儲為savestate.bat就可以了,雙按後執行,自動產生一個以當前時間和日期檔案名字的記錄文件 指令碼: @echo off rem get current date and time for /f "tokens=1,2,3,4 delims=-/. " %%j in ('Date /T') do set FILENAME=srv_%%j_%%k_%%l_%%m for /f "tokens=1,2 delims=: " %%j in ('TIME /T') do set FILENAME=%FILENAME%_%%j_%%k.bat rem get all service name sc query type= service state= all| findstr /r /c:"SERVICE_NAME:" >tmpsrv.txt echo Save Service Start State In %FILENAME% rem save service start state into batch file rem echo @echo Restore The Service Start State Saved At %TIME% %DATE% >"%FILENAME%" echo @pause >>"%FILENAME%" for /f "tokens=2 delims=:" %%j in (tmpsrv.txt) do @( sc qc %%j |findstr START_TYPE >tmpstype.txt && for /f "tokens=4 delims=:_ " %%s in ( tmpstype.txt) do @echo sc config %%j start= %%s >>"%FILENAME%") echo @pause >>"%FILENAME%" del tmpsrv.txt del tmpstype.txt 恢復服務的啟動狀態 |
送花文章: 3,
|