无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 3145|回复: 6
打印 上一主题 下一主题

这句FOR&IF复合语句哪里错误?

[复制链接]
跳转到指定楼层
1#
发表于 2012-4-7 15:53:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
想达到的效果:查找一个文件夹中所有子文件夹(包含该文件夹)中是否有PNG图片,有则继续执行命令,没有则退出。代码:

  1. @echo off
  2. 设置标题
  3. 启用延时
  4. 设置颜色
  5. :startset in=%1
  6. set out="%~dp1ico"
  7. for /r %in% %%i in (*.png) do if not exist %%a goto end
  8. ……
  9. goto end
  10. :end
复制代码

上面的for语句执行后,%in%文件夹中没有PNG图片也执行后续命令,请问,哪里错了?

[ 本帖最后由 singel 于 2012-4-8 07:37 编辑 ]
2#
发表于 2012-4-7 19:23:37 | 只看该作者
楼主没有写错,是楼主理解有错:在for...in (...) do...语句块中,如果in (...)中的条件不满足,后面的do语句是不会执行的。

这样就可以了:

for /r %in% %%i in (*.png) do set flag=1
if "%flag%"=="" goto end
……
goto end

:end
回复

使用道具 举报

3#
 楼主| 发表于 2012-4-7 21:05:42 | 只看该作者
原帖由 pznpt 于 2012-4-7 19:23 发表
楼主没有写错,是楼主理解有错:在for...in (...) do...语句块中,如果in (...)中的条件不满足,后面的do语句是不会执行的。

这样就可以了:

for /r %in% %%i in (*.png) do set flag=1
if "%flag%"=="" ...


谢谢指点O(∩_∩)O
回复

使用道具 举报

4#
发表于 2012-4-8 19:53:26 | 只看该作者

标题

原帖由 singel 于 2012-4-7 21:05 发表
谢谢指点O(∩_∩)O

在写批时,要严谨的考虑in (…) 语句块的条件是否成立! 楼主也可以用if …&&for … 复合语句解决   (if 判断for的条件语句块是否成立)
回复

使用道具 举报

5#
 楼主| 发表于 2012-4-9 17:39:17 | 只看该作者
x9tian: 在写批时,要严谨的考虑in (…) 语句块的条件是否成立!楼主也可以用if …&&for … 复合语句解决   (if 判断for的条件语句块是否成立)
for嵌套if刚学了一点皮毛,if…&&for…不会用。查了两个&&的作用,不是前面语句执行成功才执行后面语句吗?if怎么判断for语句块成立?

[ 本帖最后由 singel 于 2012-4-9 17:45 编辑 ]
回复

使用道具 举报

6#
发表于 2012-4-13 01:12:50 | 只看该作者

标题

原帖由 singel 于 2012-4-9 17:39 发表
for嵌套if刚学了一点皮毛,if…&&for…不会用。查了两个&&的作用,不是前面语句执行成功才执行后面语句吗?if怎么判断for语句块成立?

  dir /a-d/b %~dp1ico*.png&&for …in (…) do (
          …
)
  你这要求没必要用IF语句
   IF一般用来判定明确的条件,比如变量丶路径丶文件明什么的。
回复

使用道具 举报

7#
 楼主| 发表于 2012-4-13 08:28:45 | 只看该作者
原帖由 x9tian 于 2012-4-13 01:12 发表


  dir /a-d/b %~dp1ico*.png&&for …in (…) do (
          …
)
  你这要求没必要用IF语句
   IF一般用来判定明确的条件,比如变量丶路径丶文件明什么的。


谢谢,又学会一点O(∩_∩)O
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-9-28 08:16

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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