
标题: [系统相关] 请问脚本错在哪里了?关闭系统服务的批处理 [打印本页]
作者: tiaoyaonan 时间: 6 天前 13:47 标题: 请问脚本错在哪里了?关闭系统服务的批处理
用来开启或者关闭系统服务的脚本,运行就上面的错误,请问如何解决,代码如下,请帮我改一下,谢谢

- @echo off
- :: 脚本功能:批量开启或关闭 Windows 10 系统服务
- :: 使用方法:
- :: 1. 将需要操作的服务名称添加到 SERVICES 列表中。
- :: 2. 运行脚本时选择操作类型(开启或关闭)。
-
- :: 定义需要操作的服务列表
- set SERVICES=(
- "Spooler" :: 打印后台处理服务
- "wuauserv" :: Windows 更新服务
- "WinDefend" :: Windows Defender 服务
- "BITS" :: 后台智能传输服务
- :: 添加更多服务名称,每行一个
- )
-
- :: 主菜单
- echo ========================================
- echo 请选择操作类型:
- echo 1. 开启服务
- echo 2. 关闭服务
- echo ========================================
- set /p CHOICE=请输入选项(1/2):
-
- if "%CHOICE%"=="1" (
- call :START_SERVICES
- ) else if "%CHOICE%"=="2" (
- call :STOP_SERVICES
- ) else (
- echo 无效选项,请重新运行脚本。
- pause
- exit /b
- )
-
- exit /b
-
- :: 开启服务
- :START_SERVICES
- echo 正在开启服务...
- for %%S in (%SERVICES%) do (
- sc start "%%S" >nul 2>&1
- if %errorlevel% equ 0 (
- echo [成功] 开启服务: %%S
- ) else (
- echo [失败] 开启服务: %%S
- )
- )
- pause
- exit /b
-
- :: 关闭服务
- :STOP_SERVICES
- echo 正在关闭服务...
- for %%S in (%SERVICES%) do (
- sc stop "%%S" >nul 2>&1
- if %errorlevel% equ 0 (
- echo [成功] 关闭服务: %%S
- ) else (
- echo [失败] 关闭服务: %%S
- )
- )
- pause
- exit /b
复制代码
作者: aloha20200628 时间: 6 天前 14:56
本帖最后由 aloha20200628 于 2025-2-16 15:26 编辑
回复 1# tiaoyaonan
每个 set 命令中的赋值表达式至多是用本行的换行符结束的,因此变量 %SERVICES% 的有效值仅是 ) 一个字符而已...
一楼代码可订正及简化如下,仅供参考...- @echo off
- :: 脚本功能:批量开启或关闭 Windows 10 系统服务
- :: 使用方法:
- :: 1. 将需要操作的服务名称添加到以下代码 16-19 行间。
- :: 2. 运行脚本时选择操作类型(开启或关闭)。
- :menu
- echo ========================================
- echo 请选择操作类型:
- echo 1. 开启服务
- echo 2. 关闭服务
- echo ========================================
- set "input=" &set /p input=请输入选项(1/2):
- if not defined input exit/b
- if "%input%"=="1" (set "c=start") else if "%input%"=="2" (set "c=stop") else goto:menu
- for %%s in (
- "Spooler"
- "wuauserv"
- "WinDefend"
- "BITS"
- ) do sc %c% %%s>nul 2>nul&&echo,成功 %c% 服务:%%~s||echo,未能 %c% 服务:%%~s
- pause&exit /b
复制代码
作者: holley 时间: 5 天前 11:22
回复 1# tiaoyaonan - :: 定义需要操作的服务列表
- set SERVICES=Spooler wuauserv WinDefend BITS
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |