标题: [系统相关] [已解决]批处理如何保存服务状态加入注解说明? [打印本页]
作者: dennisle 时间: 2011-1-4 09:40 标题: [已解决]批处理如何保存服务状态加入注解说明?
請教批處理高手
小弟此代碼目的為保存服務器的啟動狀態,但希望能夠加上每個服務註解說明
希望會的高手不吝指教,謝謝!- @echo off
- mode con cols=46 lines=12
- for /f "tokens=1-3 delims=-/ " %%a in ('date /t') do (
- set filename=Service_%%a-%%b-%%c.cmd
- set date=%%a/%%b/%%c
- )
- cls
- echo.&echo %date% Service Start State Saved
- sc query type= service state= all | findstr /r /c:"SERVICE_NAME:" >"tmpsrv.txt"
- echo @echo Restore The Service Start State Saved At %time% %date% >"%filename%"
- echo @pause >>"%filename%"
- for /f "tokens=2 delims=:" %%a in (tmpsrv.txt) do (
- sc qc %%a | findstr START_TYPE >"tmpstype.txt"
- for /f "tokens=4 delims=:_ " %%b in (tmpstype.txt) do (
- echo sc config %%a start= %%b >>"%filename%"
- sc qdescription %%a >>"%filename%"
- )
- )
- echo @pause >>"%filename%"
- echo.&echo.&echo RestoreFile = %filename%
- del /f /q "tmpsrv.txt"
- del /f /q "tmpstype.txt"
- echo.&echo.&echo Press any key to exit...
- pause>nul
复制代码
[ 本帖最后由 dennisle 于 2011-1-4 13:57 编辑 ]
作者: hanyeguxing 时间: 2011-1-4 10:44
- @echo off&setlocal enableDelayedExpansion
- for /f "tokens=1-3 delims=-:/ " %%a in ("%date%") do set f=Service_%%a-%%b-%%c.cmd
- (echo @echo off
- echo echo 创建时间:%date% %time%
- echo pause
- for /f "tokens=1* delims==" %%a in ('wmic service get Name^,StartMode^,Description /VALUE') do (
- if /i "%%a"=="Description" set "d=%%b"
- if /i "%%a"=="Name" set "n=%%b"
- if /i "%%a"=="StartMode" (
- set s=%%b
- echo sc config "!n:~0,-1!" start=!s:Manual=DEMAND!
- echo ::!d!
- )))>"%f%"
复制代码
[ 本帖最后由 hanyeguxing 于 2011-1-4 10:52 编辑 ]
作者: dennisle 时间: 2011-1-4 11:45
非常感謝 hanyeguxing 指導的代碼
可否將服務與駐解說明的空行去除,
只保留不同服務的空行,謝謝!
作者: hanyeguxing 时间: 2011-1-4 12:39 标题: 回复 3楼 的帖子
你的代码呢????
作者: dennisle 时间: 2011-1-4 12:54 标题: 回复 4楼 的帖子
麻煩您了,謝謝!!- @echo off
- setlocal EnableDelayedExpansion
- for /f "tokens=1-3 delims=-:/ " %%a in ("%date%") do set filename=Service_%%a-%%b-%%c.cmd
- (echo @echo off
- echo echo Restore The Service Start State Saved At %date% %time%
- echo pause
- for /f "tokens=1* delims==" %%a in ('wmic service get Name^,StartMode^,Description /VALUE') do (
- if /i "%%a"=="Description" set "d=%%b"
- if /i "%%a"=="Name" set "n=%%b"
- if /i "%%a"=="StartMode" (
- set s=%%b
- echo.sc config "!n:~0,-1!" start= !s:Manual=DEMAND!
- echo.:: [!n:~0,-1!] !d!
- )))>"%filename%"
- pause >nul
复制代码
作者: hanyeguxing 时间: 2011-1-4 13:06
- @echo off&setlocal EnableDelayedExpansion
- for /f "tokens=1-3 delims=-:/ " %%a in ("%date%") do set filename=Service_%%a-%%b-%%c.cmd
- (echo @echo off
- echo echo Restore The Service Start State Saved At %date% %time%
- echo pause
- for /f "tokens=1* delims==" %%a in ('wmic service get Name^,StartMode^,Description /VALUE') do (
- if /i "%%a"=="Description" set "d=%%b"
- if /i "%%a"=="Name" set "n=%%b"
- if /i "%%a"=="StartMode" (
- set s=%%b
- echo sc config "!n:~0,-1!" start= !s:Manual=DEMAND!
- echo :: [!n:~0,-1!] !d!
- echo/
- )))>"%filename%"
复制代码
作者: dennisle 时间: 2011-1-4 13:43
抱歉! 可能我沒表達清楚,代碼運行後結果服務與服務多了一空行- @echo off
- echo Restore The Service Start State Saved At 2011/01/04 13:30:33.07
- pause
- sc config "Alerter" start= Disabled
-
- :: [Alerter] 通知選取的使用者及電腦系統管理警示。如果停止這個服務,使用系統管理警示的程式將不會收到通知。如果停用這個服務,所有依存於它的服務將無法啟動。
-
-
- sc config "ALG" start= DEMAND
-
- :: [ALG] 提供網際網路連線共用和 Windows 防火牆的第三方通訊協定插件的支援。
复制代码
希望代碼運行後的結果為- @echo off
- echo Restore The Service Start State Saved At 2011/01/04 13:30:33.07
- pause
- sc config "Alerter" start= Disabled
- :: [Alerter] 通知選取的使用者及電腦系統管理警示。如果停止這個服務,使用系統管理警示的程式將不會收到通知。如果停用這個服務,所有依存於它的服務將無法啟動。
-
- sc config "ALG" start= DEMAND
- :: [ALG] 提供網際網路連線共用和 Windows 防火牆的第三方通訊協定插件的支援。
复制代码
作者: dennisle 时间: 2011-1-4 13:56
非常感謝版主的指敎
小弟試著將代碼修改,已經完成上述問題
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |