[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] [已解决]批处理如何保存服务状态加入注解说明?

請教批處理高手
小弟此代碼目的為保存服務器的啟動狀態,但希望能夠加上每個服務註解說明
希望會的高手不吝指教,謝謝!
  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 编辑 ]
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

  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 编辑 ]
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

非常感謝 hanyeguxing 指導的代碼

可否將服務與駐解說明的空行去除,
只保留不同服務的空行,謝謝!

TOP

回复 3楼 的帖子

你的代码呢????
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

回复 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
复制代码

TOP

  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%"
复制代码
1

评分人数

寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

抱歉! 可能我沒表達清楚,代碼運行後結果服務與服務多了一空行
  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 防火牆的第三方通訊協定插件的支援。
复制代码

TOP

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

TOP

返回列表