无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 3018|回复: 5
打印 上一主题 下一主题

FOR+IF复合语句为何出错,请大师批下

[复制链接]
跳转到指定楼层
1#
发表于 2011-10-8 21:59:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想请都大师帮我写个批处理
能自动安装下载回来的更新程序,并有个安装.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, 下载次数: 46)

SpxImage2.gif
2#
发表于 2011-10-8 22:16:19 | 只看该作者
看错误提示貌似是/quiet /norestart 不对?
回复

使用道具 举报

3#
 楼主| 发表于 2011-10-8 22:23:22 | 只看该作者
点了确定就是成功安装了 为何呢
回复

使用道具 举报

4#
发表于 2011-10-8 23:33:52 | 只看该作者
errorlevel 1 改成 %errorlevel%==1 试试

高手们继续解答吧
回复

使用道具 举报

5#
发表于 2011-10-10 10:40:29 | 只看该作者
errorlevel  变量,在FOR 语句中多次出现, 多次重复赋值,这己经涉及到变量延时的问题了, 你不启用变量延时能不出错么、?

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

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

批量安装程序,  单FOR 语句是存在很多地方要处理的,  最麻烦的是如果,遇到文件名带括号,你就死翘翘了,  一般严谨点都是 for /f  加DIR 命令, 列出要处理的文件, DELMS=指无或tokens指*,外理才能通用。
回复

使用道具 举报

6#
发表于 2011-10-22 23:58:09 | 只看该作者
我是觉得你的for语句有问题!

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

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

if判断也有问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-16 18:27

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表