如果我说得不恰当,请别介意,因为这是我的第一篇帖子。:-) 但我一直在寻找一种方法来通过批处理文件查询 Windows 更新服务,并根据其当前状态将其关闭或打开。最终,我希望能够查询服务是否已启动,然后停止它。最重要的是,我希望能够查询它是否设置为随 Windows 自动启动并禁用。然后我使用相同的批处理文件进行查询,并可能转到另一个。例如,如果打开,则关闭。如果关闭,则打开。或者可能查询,然后提供关闭/打开或更改服务状态和启动的选项。
我找到了如何通过使用以下命令分别执行这些操作(主要是通过此站点):
- sc 启动 wuauserv
- sc 停止 wuauserv
- 查询 wuauserv
- sc config wuauserv 启动=自动
- sc config wuauserv start=禁用
因此,通过这些,我可以创建两个不同的文件来停止服务并在启动时禁用它,并创建一个单独的文件来启动服务并将启动设置为自动,但如果可能的话,我想用一个文件完成所有这些操作。
所以这花了很长时间,但我想确保我的目标得到实现,并表明我确实做了一些先发制人的研究。
更新:必须稍微放大一下您的示例: 当我右键单击我创建的 .bat 文件并以管理员身份运行它时,它的样子如下:
我注意到您似乎正在使用 Windows 8.1,而我在使用 Windows 7。这有什么区别吗?
答案1
就是这样:
@echo off
@title Windows Update Status Tool
IF "%~1"=="" goto ERROR
IF "%~1"=="q" goto Q
IF "%~1"=="disable" goto DISABLE
IF "%~1"=="stop" goto STOP
IF "%~1"=="start" goto START
IF "%~1"=="enable" goto ENABLE
:Q
sc query wuauserv
pause
goto EOF
:DISABLE
sc config wuauserv start=disabled
echo Done!
pause
goto EOF
:STOP
sc stop wuauserv
goto EOF
:START
sc start wuauserv
goto EOF
:ENABLE
sc config wuauserv start=auto
echo Done!
pause
goto EOF
:ERROR
echo Invalid command! Valid syntax is: q, disable, enable, stop, start.
pause
goto EOF
:EOF
请记住,此批处理文件需要以管理员身份运行才能使用。它接受参数q, start, stop, enable, disable
,可以使用此语法运行,winupd q
将 q 替换为您希望文件执行的项目。
例子: