Board logo

标题: [文本处理] [已解决]批处理如何判断文件是否存在,存在则执行代码,不存在则退出! [打印本页]

作者: ksla    时间: 2016-1-22 11:13     标题: [已解决]批处理如何判断文件是否存在,存在则执行代码,不存在则退出!

本帖最后由 ksla 于 2016-1-22 13:49 编辑

1.首先运行:A.bat(A.bat可能会生成一个1.txt)
2.判断运行A.bat之后是否生成了1.txt文件
生成----则运行A.bat(循环运行A.bat,直到不生成1.txt)
不生成----运行两次A.bat也不出现1.txt则直接退出!

或者:
1.首先运行:A.bat(A.bat可能会生成一个1.txt)
2.判断运行A.bat之后是否生成了1.txt文件
生成----则运行A.bat(循环运行A.bat,直到不生成1.txt)
不生成----则直接退出!


有心人请帮帮忙,谢谢!
作者: ygqiang    时间: 2016-1-22 11:53

本帖最后由 ygqiang 于 2016-1-22 11:56 编辑

回复 1# ksla
  1. @echo off
  2. if exist a.bat (
  3. :next
  4. start "" a.bat
  5. if exist 1.txt (goto :next)
  6. exit
  7. )
复制代码

作者: ksla    时间: 2016-1-22 12:08

回复 2# ygqiang


    闪退...
作者: ygqiang    时间: 2016-1-22 12:42

回复 3# ksla


    你的a.bat  1.txt文件,都存在?
作者: ksla    时间: 2016-1-22 12:47

回复 4# ygqiang


    a.bat是存在,但1.txt要先运a.bat再生成出来的(可能生成,可能不生成。生成就继续运行a.bat,不生成就直接退出)
作者: ygqiang    时间: 2016-1-22 13:33

回复 5# ksla
  1.     @echo on
  2. if exist a.bat (
  3. :next
  4. echo exist a.bat
  5. start "" a.bat
  6. pause
  7. if exist 1.txt (echo exist 1.txt && pause && goto :next)
  8. echo not exist 1.txt
  9. pause
  10. exit
  11. )
  12. echo not exist a.bat
  13. pause
  14. exit
复制代码
运行这个,发截图看看?
作者: ksla    时间: 2016-1-22 13:48

本帖最后由 ksla 于 2016-1-22 15:32 编辑

回复 6# ygqiang

哥们,,谢谢你的回答,,我参考了论坛的帖子,已经制作出来了
  1. @echo off
  2. :: 运行a.bat
  3. call "a.bat"
  4. :: 判断运行a.bat之后是否生成1.txt,生成则运行goto 1,不生成则运行goto 2
  5. if exist 1.txt (
  6.   goto 1
  7. ) else (
  8.   if not exist 1.txt goto 2
  9. )
  10. ::生成则重新运行此代码
  11. :1
  12. call "判断文件是否存在.bat"
  13. goto 1
  14. ::不生成直接退出
  15. :2
  16. exit
  17. goto 2
复制代码

作者: ygqiang    时间: 2016-1-22 14:01

回复 6# ygqiang


    a.bat,生成1.txt,需要多久时间?
作者: ksla    时间: 2016-1-22 14:10

回复 8# ygqiang


    不定的,,有时十几分钟,有时几个钟!
作者: ygqiang    时间: 2016-1-22 15:15

回复 9# ksla


a.bat,生成1.txt,需要多久时间?.
不定的,,有时十几分钟,有时几个钟!

    判断运行A.bat之后是否生成了1.txt文件
那这个判断的代码,就需要修改下了。。
作者: ksla    时间: 2016-1-22 15:41

本帖最后由 ksla 于 2016-1-22 15:43 编辑

回复 10# ygqiang

我现在使用的是以下的批处理(确实很差劲的批处理),但尝试了几次,判断的代码也无出现错误,使用你新写的代码,还是闪退,,
  1. @echo off
  2. :3
  3. :: 运行a.bat
  4. call "a.bat"
  5. :: 判断运行a.bat之后是否生成1.txt,生成则运行goto 2,不生成则运行goto 1
  6. if exist 1.txt (
  7.   goto 2
  8. ) else (
  9.   if not exist 1.txt goto 1
  10. )
  11. ::不生成直接退出
  12. :1
  13. exit
  14. goto 1
  15. ::生成则重新运行此代码
  16. :2
  17. goto 3
复制代码

作者: ygqiang    时间: 2016-1-22 16:32

回复 11# ksla


    call "a.bat"是关键。。。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2