无忧启动论坛

标题: 这句FOR&IF复合语句哪里错误? [打印本页]

作者: singel    时间: 2012-4-7 15:53
标题: 这句FOR&IF复合语句哪里错误?
想达到的效果:查找一个文件夹中所有子文件夹(包含该文件夹)中是否有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 编辑 ]
作者: pznpt    时间: 2012-4-7 19:23
楼主没有写错,是楼主理解有错:在for...in (...) do...语句块中,如果in (...)中的条件不满足,后面的do语句是不会执行的。

这样就可以了:

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

:end
作者: singel    时间: 2012-4-7 21:05
原帖由 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
作者: x9tian    时间: 2012-4-8 19:53
标题: 标题
原帖由 singel 于 2012-4-7 21:05 发表
谢谢指点O(∩_∩)O

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

[ 本帖最后由 singel 于 2012-4-9 17:45 编辑 ]
作者: x9tian    时间: 2012-4-13 01:12
标题: 标题
原帖由 singel 于 2012-4-9 17:39 发表
for嵌套if刚学了一点皮毛,if…&&for…不会用。查了两个&&的作用,不是前面语句执行成功才执行后面语句吗?if怎么判断for语句块成立?

  dir /a-d/b %~dp1ico*.png&&for …in (…) do (
          …
)
  你这要求没必要用IF语句
   IF一般用来判定明确的条件,比如变量丶路径丶文件明什么的。
作者: singel    时间: 2012-4-13 08:28
原帖由 x9tian 于 2012-4-13 01:12 发表


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


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




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