Board logo

标题: [系统相关] [已解决]批处理如何保存服务状态加入注解说明? [打印本页]

作者: dennisle    时间: 2011-1-4 09:40     标题: [已解决]批处理如何保存服务状态加入注解说明?

請教批處理高手
小弟此代碼目的為保存服務器的啟動狀態,但希望能夠加上每個服務註解說明
希望會的高手不吝指教,謝謝!
  1. @echo off
  2. mode con cols=46 lines=12
  3. for /f "tokens=1-3 delims=-/ " %%a in ('date /t') do (
  4.         set filename=Service_%%a-%%b-%%c.cmd
  5.         set date=%%a/%%b/%%c
  6. )
  7. cls
  8. echo.&echo   %date% Service Start State Saved
  9. sc query type= service state= all | findstr /r /c:"SERVICE_NAME:" >"tmpsrv.txt"
  10. echo @echo Restore The Service Start State Saved At %time% %date% >"%filename%"
  11. echo @pause >>"%filename%"
  12. for /f "tokens=2 delims=:" %%a in (tmpsrv.txt) do (
  13.         sc qc %%a | findstr START_TYPE >"tmpstype.txt"
  14.         for /f "tokens=4 delims=:_ " %%b in (tmpstype.txt) do (
  15.                 echo sc config %%a start= %%b >>"%filename%"
  16.                 sc qdescription %%a >>"%filename%"
  17.         )
  18. )
  19. echo @pause >>"%filename%"
  20. echo.&echo.&echo      RestoreFile = %filename%
  21. del /f /q "tmpsrv.txt"
  22. del /f /q "tmpstype.txt"
  23. echo.&echo.&echo           Press any key to exit...
  24. pause>nul
复制代码

[ 本帖最后由 dennisle 于 2011-1-4 13:57 编辑 ]
作者: hanyeguxing    时间: 2011-1-4 10:44

  1. @echo off&setlocal enableDelayedExpansion
  2. for /f "tokens=1-3 delims=-:/ " %%a in ("%date%") do set f=Service_%%a-%%b-%%c.cmd
  3. (echo @echo off
  4. echo echo 创建时间:%date% %time%
  5. echo pause
  6. for /f "tokens=1* delims==" %%a in ('wmic service get Name^,StartMode^,Description /VALUE') do (
  7.         if /i "%%a"=="Description" set "d=%%b"
  8.         if /i "%%a"=="Name" set "n=%%b"
  9.         if /i "%%a"=="StartMode" (
  10.         set s=%%b
  11.         echo sc config "!n:~0,-1!" start=!s:Manual=DEMAND!
  12.         echo ::!d!
  13. )))>"%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楼 的帖子

麻煩您了,謝謝!!
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. for /f "tokens=1-3 delims=-:/ " %%a in ("%date%") do set filename=Service_%%a-%%b-%%c.cmd
  4. (echo @echo off
  5. echo echo Restore The Service Start State Saved At %date% %time%
  6. echo pause
  7. for /f "tokens=1* delims==" %%a in ('wmic service get Name^,StartMode^,Description /VALUE') do (
  8. if /i "%%a"=="Description" set "d=%%b"
  9. if /i "%%a"=="Name" set "n=%%b"
  10. if /i "%%a"=="StartMode" (
  11. set s=%%b
  12. echo.sc config "!n:~0,-1!" start= !s:Manual=DEMAND!
  13. echo.:: [!n:~0,-1!] !d!
  14. )))>"%filename%"
  15. pause >nul
复制代码

作者: hanyeguxing    时间: 2011-1-4 13:06

  1. @echo off&setlocal EnableDelayedExpansion
  2. for /f "tokens=1-3 delims=-:/ " %%a in ("%date%") do set filename=Service_%%a-%%b-%%c.cmd
  3. (echo @echo off
  4. echo echo Restore The Service Start State Saved At %date% %time%
  5. echo pause
  6. for /f "tokens=1* delims==" %%a in ('wmic service get Name^,StartMode^,Description /VALUE') do (
  7. if /i "%%a"=="Description" set "d=%%b"
  8. if /i "%%a"=="Name" set "n=%%b"
  9. if /i "%%a"=="StartMode" (
  10. set s=%%b
  11. echo sc config "!n:~0,-1!" start= !s:Manual=DEMAND!
  12. echo :: [!n:~0,-1!] !d!
  13. echo/
  14. )))>"%filename%"
复制代码

作者: dennisle    时间: 2011-1-4 13:43

抱歉! 可能我沒表達清楚,代碼運行後結果服務與服務多了一空行
  1. @echo off
  2. echo Restore The Service Start State Saved At 2011/01/04 13:30:33.07
  3. pause
  4. sc config "Alerter" start= Disabled
  5. :: [Alerter] 通知選取的使用者及電腦系統管理警示。如果停止這個服務,使用系統管理警示的程式將不會收到通知。如果停用這個服務,所有依存於它的服務將無法啟動。
  6. sc config "ALG" start= DEMAND
  7. :: [ALG] 提供網際網路連線共用和 Windows 防火牆的第三方通訊協定插件的支援。
复制代码
希望代碼運行後的結果為
  1. @echo off
  2. echo Restore The Service Start State Saved At 2011/01/04 13:30:33.07
  3. pause
  4. sc config "Alerter" start= Disabled
  5. :: [Alerter] 通知選取的使用者及電腦系統管理警示。如果停止這個服務,使用系統管理警示的程式將不會收到通知。如果停用這個服務,所有依存於它的服務將無法啟動。
  6. sc config "ALG" start= DEMAND
  7. :: [ALG] 提供網際網路連線共用和 Windows 防火牆的第三方通訊協定插件的支援。
复制代码

作者: dennisle    时间: 2011-1-4 13:56

非常感謝版主的指敎
小弟試著將代碼修改,已經完成上述問題




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2