[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[特效代码] [已解决]多个批处理,如何寻找最后运行结束的那个?

本帖最后由 jzsgyml 于 2011-4-18 12:25 编辑

三个批处理“1.bat”“2.bat”“3.bat”,某段时间程序会全部调用它们,但是不确定调用的顺序,以及这三个批处理运行结束的先后顺序。
现在的要求是,最后结束的批处理,能够判断自己是最后结束的,然后执行断开网络,断开后结束这三个批处理进程
  1. rasdial adsl /disconnect >nul
  2. taskkill /f /t /im cmd.exe
复制代码
我个人考虑的解决方案是,在三个批处理末尾都加上一个判断自己是不是最后结束的代码,思路如下
  1. echo 结束>>"D:\finish.txt" 运行完毕就写入一行,用来判断是否3个批处理都写入了1行
  2. 判断"D:\finish.txt"的行数是否达到3行
  3. 如果达到3行,执行
  4. 清空"D:\finish.txt",让他下一次调用能够循环
  5. rasdial adsl /disconnect >nul断网
  6. taskkill /f /t /im cmd.exe关闭三个批处理进程
  7. 如果没有达到3行,说明这个批处理是第一个,或者第二个结束的
  8. 执行等待pause,让最后结束的来关闭全部cmd窗口
复制代码
求下思路实际代码,或者咨询下各位有更好的解决方案?
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

本帖最后由 hanyeguxing 于 2011-4-18 09:48 编辑

方法可以有很多,但不明白为什么要一起结束呢?
  1. @echo off
  2. for %%a in (finish.txt) do if "%%~za"=="2" (
  3.     del finish.txt
  4.     rasdial adsl /disconnect >nul
  5.     taskkill /f /t /im cmd.exe
  6. )
  7. set/p=a<nul>finish.txt
  8. pause
复制代码
1

评分人数

寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

因为程序暂停运行然后去调用三个批处理,是监控这三个批处理的进程是否存在,如果提前结束先完成的批处理进程,程序会马上启动,就出错了,所以要等3个都完成了再一起结束进程,我测试测试,谢谢!

TOP

返回列表