找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 25739|回复: 9

[文件操作] 批处理for命令使用疑问

[复制链接]
发表于 2015-11-1 00:58:49 | 显示全部楼层 |阅读模式

  1. @echo off
  2. pushd %~dp0
  3. setlocal enabledelayedexpansion
  4. for /f "eol=; delims=" %%i in (list.log) do (
  5. echo installing %%i && "%%i" /quiet /norestart && echo ok
  6. )
  7. pause
复制代码
请问为何运行后没有显示"ok"?
发表于 2015-11-1 02:08:37 | 显示全部楼层
你自己知道你那一整行echo是什么意思吗?
发表于 2015-11-1 02:40:11 | 显示全部楼层
list.log 不为空的话,有两个可能:
1、list.log 里的内容都是以 ; 开头的字符串,所以被跳过了
2、"%%i" /quiet /norestart 执行后返回值不为 0
 楼主| 发表于 2015-11-1 11:21:29 | 显示全部楼层
回复 3# CrLf


    && echo ok的意思是前面成功才显示ok吧?
    | echo ok倒是能显示ok,但意思好像不大一样
 楼主| 发表于 2015-11-1 11:24:57 | 显示全部楼层
回复 2# 依山居


    先提示正在安装什么补丁,再执行安装,如果前一条命令执行成功就提示ok
发表于 2015-11-1 11:27:17 | 显示全部楼层
  1. @echo off
  2. pushd %~dp0
  3. setlocal enabledelayedexpansion
  4. for /f "eol=; delims=" %%i in (list.log) do (
  5. echo installing %%i
  6. "%%i" /quiet /norestart
  7. echo ok
  8. )
  9. pause
复制代码
发表于 2015-11-1 11:40:36 | 显示全部楼层
回复 4# crist


    差别大了。
发表于 2015-11-1 21:57:40 | 显示全部楼层
%%i的内容是什么?用到了引号"路径程序"直接执行没有关闭,系统是该判断成功执行呢?还是没有成功执行?再或者是正在执行中,因为直接执行的程序在没有执行完成无法获取返回值
 楼主| 发表于 2015-11-1 22:09:12 | 显示全部楼层
回复 8# /zhqsystem/zhq


    %%i是list.log里面的文件名,用引号是预防list.log里面的文件名有空格,想用echo installing %%i && start "" "%%i" /quiet /norestart && echo ok命令可虽然显示ok但实际没有安装到%%i
发表于 2015-11-1 22:44:51 | 显示全部楼层
回复 9# crist
将start改为start/w
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 12:11 , Processed in 0.019953 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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