如何通过bat文件运行Windows更新?

问题描述 投票:0回答:2

这是我第一次尝试认真的批处理文件。我正在为我的工作做这个,没有涉及太多细节,因为我知道有更好的方法来完成我想要的过程,我希望这个批处理文件请求用户允许检查在线更新,安装它们,然后自动重启。如果用户不批准,我希望文件要求关闭并在 2 小时后再次询问。

代码:

@echo off

title Weekly Windows Updater

echo ###################################################################################
echo #                                                                                 #
echo #    In order to prevent common problems such as connection or display errors,    #
echo #    REDACTED is asking that updates be performed weekly!                         #
echo #                                                                                 #
echo #    Don't worry! This process is mostly hands off for our teachers and staff!    #
echo #    Just give this bot approval by typing y for yes, or n for no.                #
echo #                                                                                 #
echo #          NOTE: THIS PROCESS MAY TAKE 5-20 MINUTES TO COMPLETE!                  #
echo #          ANY DOCUMENTS OPEN WILL NEED TO BE SAVED PRIOR                         #
echo #          TO APPROVING THIS BOT TO RUN UPDATES!                                  #
echo ###################################################################################

REM Will ask the user if updates can run.

:choice
set /P c=May we run Windows Updates on your laptop?[Y/N]?
if /I "%c%" EQU "Y" goto :Approved
if /I "%c%" EQU "N" goto :Not_Approved
goto :choice

:Approved

call wuaclt.exe


:Not_Approved

REM close program and run again after x hours

pause

我已经浏览了多个在线资源,了解打开命令提示符或 powershell 的方法,以及通过进入 System32 并启动 .exe 文件来运行 Windows 更新的方法。我尝试过 EXECUTE、call 和 START 等功能。我在这个项目中最常见的错误是“‘NEEDS’不被识别为内部或外部命令、可操作程序或批处理文件。”然而所有修复它的方法示例对我来说都不起作用。

正如我所说,我对构建这样的文件还很陌生,不确定我缺少什么。

windows batch-file cmd
2个回答
0
投票
@echo off

title Weekly Windows Updater

echo ###################################################################################
echo # #
echo # In order to prevent common problems such as connection or display errors, #
echo # REDACTED is asking that updates be performed weekly! #
echo # #
echo # Don't worry! This process is mostly hands off for our teachers and staff! #
echo # Just give this bot approval by typing y for yes, or n for no. #
echo # #
echo # NOTE: THIS PROCESS MAY TAKE 5-20 MINUTES TO COMPLETE! #
echo # ANY DOCUMENTS OPEN WILL NEED TO BE SAVED PRIOR #
echo # TO APPROVING THIS BOT TO RUN UPDATES! #
echo ###################################################################################

REM Will ask the user if updates can run.

:choice
set /P c=May we run Windows Updates on your laptop?[Y/N]?
if /I "%c%" == "Y" goto :Approved
if /I "%c%" == "N" goto :Not_Approved
goto :choice

:Approved

wusa /detectnow

echo Windows updates are running in the background...
echo Please do not turn off your computer.

:Not_Approved

REM close program and run again after 2 hours

timeout /t 7200

goto :choice

此代码使用与前一个代码相同的逻辑...但不使用 wusa.exe 命令...我们将尝试 wusa 命令。现在的“超时”命令只是等待指定的时间而不重定向输出。

关于Compo所说的SER /P...他可以优化它而不是指向它....


0
投票

我建议使用 Choice 命令来获取响应,而不是 SET /P。 这是一个有用的批处理文件示例。 本文可能有助于从命令行运行更新 (https://www.thewindowsclub.com/batch-file-to-download-install-windows-updates)。

@echo off
echo ######################################################################
echo # Test the Choice option with a novel goto possibility.
echo.
choice /C yn /D n /T 30 /M "Do you want to continue? "
goto OPTION_%ERRORLEVEL%

:OPTION_2
echo # You typed No.
goto SKIP

:OPTION_1
echo # You typed Yes
goto SKIP

:SKIP
echo Done.
pause
© www.soinside.com 2019 - 2024. All rights reserved.