标题: [文件操作] 如何在满足条件的情况下跳出一次for循环继续下一次循环操作 [打印本页]
作者: 0428_hai 时间: 2009-7-23 21:21 标题: 如何在满足条件的情况下跳出一次for循环继续下一次循环操作
如题,问题比较拗口。
可能是个简单,也很容易的问题,但是鄙人菜鸟,不是很懂。
for循环中如何在满足条件的情况下跳出本次循环,继续下一次循环呢?
goto :eof好像是跳出整个循环操作
setlocal enablede……
for /f "delims=" %%i in ('dir /a /b *.txt') do (
echo %%i
set /p var=该文件是你查找的文件吗?
if !var!==n 执行下一次循环,下面的命令不再执行
echo 该文件是欲查找文件。
)
红色字体的命令如何填写?
不用if else写。
[ 本帖最后由 0428_hai 于 2009-7-23 21:29 编辑 ]
作者: Batcher 时间: 2009-7-23 21:38
批处理中的for循环没有像高级语言中的continue命令、
在你的这个代码中使用if else也许是最简洁、最高效的方案。
作者: Lumiere 时间: 2009-7-23 22:51
或者用管道符号||,在if !var!==n 后执行一个无关痛痒但是一定要在if成立的条件下执行成功的命令然后加上“||echo 该文件是欲查找文件。”
作者: more 时间: 2009-7-23 22:51
试试用call看看?- @echo off
- for /f "delims=" %%i in ('dir /a /a-d /b *.txt') do (
- echo %%i
- call :out
- )
- goto :eof
- :out
- set var=&set /p var=该文件是你查找的文件吗?:
- if /i "%var%"=="n" goto :eof
- echo 该文件是欲查找文件。
复制代码
作者: Batcher 时间: 2009-7-23 22:59 标题: 回复 3楼 的帖子
管道符只有一个,那就是|
||、&&、&之类的叫做命令连接符
作者: Lumiere 时间: 2009-7-24 15:52 标题: 回复 5楼 的帖子
管理员真是火眼金眼睛啊,佩服佩服
作者: 0428_hai 时间: 2009-7-24 17:03
原帖由 more 于 2009-7-23 22:51 发表
试试用call看看?@echo off
for /f "delims=" %%i in ('dir /a /a-d /b *.txt') do (
echo %%i
call ut
)
goto :eof
:out
set var=&set /p var=该文件是你查找的文件吗?:
if /i "%var%"=="n" goto :eof
e ...
这位仁兄的方案貌似是可行的,谢谢了。。
原帖由 Batcher 于 2009-7-23 22:59 发表
管道符只有一个,那就是|
||、&&、&之类的叫做命令连接符
题外话,这个&&的作用好像是只有在前面的命令运行成功后,才执行连接符后面的命令,可这个运行成功是什么意思呢?
我删除一个文件 del /f /q a.txt ,这个a.txt文件不存在,算是运行成功吗?为什么?
作者: more 时间: 2009-7-24 17:52
原帖由 0428_hai 于 2009-7-24 17:03 发表
这位仁兄的方案貌似是可行的,谢谢了。。
题外话,这个&&的作用好像是只有在前面的命令运行成功后,才执行连接符后面的命令,可这个运行成功是什么意思呢?
我删除一个文件 del /f /q a.txt ,这个a.txt ...
试试???
- @echo off
- :agn
- md more 2>nul&&echo.创建成功...||(echo.创建失败...&&ping -n 3 127.1>nul&goto :eof)
- ping -n 3 127.1>nul
- goto :agn
复制代码
作者: 0428_hai 时间: 2009-7-24 20:54
原帖由 more 于 2009-7-24 17:52 发表
试试???
@echo off
:agn
md more 2>nul&&echo.创建成功...||(echo.创建失败...&&ping -n 3 127.1>nul&goto :eof)
ping -n 3 127.1>nul
goto :agn
已测试,将md替换为rd结果也是
成功
失败
但是,将md换为del,那么结果就一直是
成功
成功
成功
……
这是为什么呢?md和rd在创建和删除时遇到已存在或不存在时就是操作失败,可del在没发现要删除的文件时,却依然是操作成功?为什么呢?
作者: Batcher 时间: 2009-7-24 20:55 标题: 回复 7楼 的帖子
尽量减少call命令的使用,否则可能会降低代码执行的效率。
作者: 523066680 时间: 2009-7-24 21:33
不要求速度的情况下如果没别的办法就用用call啦~
刚刚老想用 "a=::" 或"a=" 作为开关判断是否执行的~ 仔细想想也不适合
假如不是必须用call ,或是用call更适合,那还是用FOR结合IF吧
因为call的话 后面还是要有判断啊,循环的每次还是有个判断,而且加上调用句
暂时认为,一般的情况还是在For里面直接if判断比较适合。看情况吧。。。
[ 本帖最后由 523066680 于 2009-7-24 21:38 编辑 ]
作者: netbenton 时间: 2009-7-25 18:45
setlocal enablede……
for /f "delims=" %%i in ('dir /a /b *.txt') do (
echo %%i
set /p var=该文件是你查找的文件吗?
if !var!==n (
rem 执行下一次循环,下面的命令不再执行
) else (
echo 该文件是欲查找文件。
))
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |