- @echo off
- setlocal enabledelayedexpansion
- set /a num=0
- for %%i in (D:\补丁\*.exe) do (%%i /passive /norestart /nobackup /quiet && set /a num+=1 && echo 已完成!num!个补丁程序 %%i。)
复制代码 这段代码就是自动安装d:\补丁\中的补丁程序,其中do中的三个语句实现的功能是:每当一个补丁程序完成之后,num加1,同时显示已完成了第几个补丁%%i。但有2个问题出现了,一个问题是/nobackup不是通用参数,对于某些补丁程序属于无效参数,所以尽管该补丁是可以正常运行的补丁,由于这个无效参数而不能运行,所以这里应该去掉该参数,我相信这个地方即使对于老鸟来说都是不容易察觉到的地方。另外一个问题,我目前仍不知如何解决,就是对于所有需要重启才能生效的补丁,执行了第一个语句“%%i /passive /norestart /nobackup /quiet ”之后,该补丁确实安装了,但是即使你加了/norestart 参数,批处理程序仍然认为这个语句没有完成,所以第一个&&之后的语句均不执行,这样就造成一个问题,后面显示的已完成补丁程序的数量跟实际完成的数量不一样,换句话说,假设成功运行了10个补丁,其中有5个补丁是需要重启才可以生效的补丁,那么最终的显示结果却是已完成了5个补丁。请问各位,这个缺陷如何弥补?谢谢! |