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

[系统相关] 请问脚本错在哪里了?关闭系统服务的批处理

用来开启或者关闭系统服务的脚本,运行就上面的错误,请问如何解决,代码如下,请帮我改一下,谢谢


  1. @echo off
  2. :: 脚本功能:批量开启或关闭 Windows 10 系统服务
  3. :: 使用方法:
  4. ::   1. 将需要操作的服务名称添加到 SERVICES 列表中。
  5. ::   2. 运行脚本时选择操作类型(开启或关闭)。
  6. :: 定义需要操作的服务列表
  7. set SERVICES=(
  8.     "Spooler"       :: 打印后台处理服务
  9.     "wuauserv"      :: Windows 更新服务
  10.     "WinDefend"     :: Windows Defender 服务
  11.     "BITS"          :: 后台智能传输服务
  12.     :: 添加更多服务名称,每行一个
  13. )
  14. :: 主菜单
  15. echo ========================================
  16. echo 请选择操作类型:
  17. echo 1. 开启服务
  18. echo 2. 关闭服务
  19. echo ========================================
  20. set /p CHOICE=请输入选项(1/2):
  21. if "%CHOICE%"=="1" (
  22.     call :START_SERVICES
  23. ) else if "%CHOICE%"=="2" (
  24.     call :STOP_SERVICES
  25. ) else (
  26.     echo 无效选项,请重新运行脚本。
  27.     pause
  28.     exit /b
  29. )
  30. exit /b
  31. :: 开启服务
  32. :START_SERVICES
  33.     echo 正在开启服务...
  34.     for %%S in (%SERVICES%) do (
  35.         sc start "%%S" >nul 2>&1
  36.         if %errorlevel% equ 0 (
  37.             echo [成功] 开启服务: %%S
  38.         ) else (
  39.             echo [失败] 开启服务: %%S
  40.         )
  41.     )
  42.     pause
  43.     exit /b
  44. :: 关闭服务
  45. :STOP_SERVICES
  46.     echo 正在关闭服务...
  47.     for %%S in (%SERVICES%) do (
  48.         sc stop "%%S" >nul 2>&1
  49.         if %errorlevel% equ 0 (
  50.             echo [成功] 关闭服务: %%S
  51.         ) else (
  52.             echo [失败] 关闭服务: %%S
  53.         )
  54.     )
  55.     pause
  56.     exit /b
复制代码

本帖最后由 aloha20200628 于 2025-2-16 15:26 编辑

回复 1# tiaoyaonan

每个 set 命令中的赋值表达式至多是用本行的换行符结束的,因此变量 %SERVICES% 的有效值仅是 ) 一个字符而已...
一楼代码可订正及简化如下,仅供参考...
  1. @echo off
  2. :: 脚本功能:批量开启或关闭 Windows 10 系统服务
  3. :: 使用方法:
  4. ::   1. 将需要操作的服务名称添加到以下代码 16-19 行间。
  5. ::   2. 运行脚本时选择操作类型(开启或关闭)。
  6. :menu
  7. echo ========================================
  8. echo 请选择操作类型:
  9. echo 1. 开启服务
  10. echo 2. 关闭服务
  11. echo ========================================
  12. set "input=" &set /p input=请输入选项(1/2):
  13. if not defined input exit/b
  14. if "%input%"=="1" (set "c=start") else if "%input%"=="2" (set "c=stop") else goto:menu
  15. for %%s in (
  16.    "Spooler"
  17.    "wuauserv"
  18.    "WinDefend"
  19.    "BITS"
  20. ) do sc %c% %%s>nul 2>nul&&echo,成功 %c% 服务:%%~s||echo,未能 %c% 服务:%%~s
  21. pause&exit /b
复制代码

TOP

回复 1# tiaoyaonan
  1. :: 定义需要操作的服务列表
  2. set SERVICES=Spooler wuauserv WinDefend BITS
复制代码

TOP

返回列表