无忧启动论坛

标题: FOR+IF复合语句为何出错,请大师批下 [打印本页]

作者: wanxibing    时间: 2011-10-8 21:59
标题: FOR+IF复合语句为何出错,请大师批下
我想请都大师帮我写个批处理
能自动安装下载回来的更新程序,并有个安装.log文件,能记录哪些程序已成功安装,哪些是安装失败,我自已已写了个就是对的也是成功安装,错误的也是成功安装,不知为何?
我写的批处是这样的:
for %%a in (*.exe) do  (
start /wait %%a /quiet /norestart
if errorlevel 1 (echo %%a  错误!未安装 >>"%date%setup.txt") else echo %%a  已成功安装 >>"%date%setup.txt"

)

SpxImage2.gif (15.62 KB, 下载次数: 47)

SpxImage2.gif

作者: pznpt    时间: 2011-10-8 22:16
看错误提示貌似是/quiet /norestart 不对?
作者: wanxibing    时间: 2011-10-8 22:23
点了确定就是成功安装了 为何呢
作者: pznpt    时间: 2011-10-8 23:33
errorlevel 1 改成 %errorlevel%==1 试试

高手们继续解答吧
作者: x9tian    时间: 2011-10-10 10:40
errorlevel  变量,在FOR 语句中多次出现, 多次重复赋值,这己经涉及到变量延时的问题了, 你不启用变量延时能不出错么、?

还有就是楼上提到的, if 语句格式写错了,
其次,如果,%%a 是个有空格的文件名,那么运行是, for 语句,也会出错, 既使,你加上 usebackq 参数, start 的输写,也不严谨,

如果遇到包含空格文件的可持行文件 会变成, start /wait "%%a" /quiet /norestart  很名显,%%a 自动被FOR语句补上了引号,无形中又变成了,start 命令的,窗口名。  

批量安装程序,  单FOR 语句是存在很多地方要处理的,  最麻烦的是如果,遇到文件名带括号,你就死翘翘了,  一般严谨点都是 for /f  加DIR 命令, 列出要处理的文件, DELMS=指无或tokens指*,外理才能通用。
作者: bbsphixy    时间: 2011-10-22 23:58
我是觉得你的for语句有问题!

还有得考虑start执行文件的问题,start不允许带空格的文件

我还真不知道start还有/quiet /norestart 参数!

if判断也有问题




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3