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

[系统相关] [已解决]批处理等待某个进程结束后再执行另下一步

这段代码是我从知道里另一个问题上复制下来的。请高手帮我改一下。
  1. @echo off
  2. set taskname=calc.exe
  3. echo.%taskname%未运行,
  4. echo.等待%taskname%运行...
  5. echo.
  6. echo.
  7. goto :loop1
  8. :loop1
  9. for /f %%a in ('tasklist.exe /FI "IMAGENAME eq %taskname%" /FI "STATUS eq RUNNING" /FO TABLE /NH^|find.exe /i "%taskname%"') do (
  10. echo.发现%taskname%正在运行,
  11. echo.等待%taskname%运行结束...
  12. echo.
  13. echo.
  14. goto :loop2
  15. )
  16. ping 127.1 -n 2 >nul 2>nul
  17. goto :loop1
  18. :loop2
  19. for /f %%a in ('tasklist.exe /FI "IMAGENAME eq %taskname%" /FI "STATUS eq RUNNING" /FO TABLE /NH^|find.exe /i "没有"') do (
  20. echo.%taskname%未运行,
  21. echo.等待%taskname%运行...
  22. echo.
  23. echo.
  24. goto :loop1
  25. )
  26. ping 127.1 -n 2 >nul 2>nul
  27. goto :loop2
复制代码
第一个loop是检测是否允许,如果运行,则提示已运行,然后跳转到第二个loop检测是否终止运行,如果终止运行,跳回第一个loop如此循环检测。
把这一段意思改成:如果运行,则提示已运行,然后跳转到第二个loop检测是否终止运行,如果终止运行,则进行下一步,也就是 shutdown -r -t 02 -f

[ 本帖最后由 wbance 于 2011-3-18 21:55 编辑 ]
1

评分人数

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

把第三个goto :loop1
改成需要的命令
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

不行啊
你说的是不是这个意思?
  1. @echo off
  2. set taskname=calc.exe
  3. echo.%taskname%未运行,
  4. echo.等待%taskname%运行...
  5. echo.
  6. echo.
  7. goto :loop1
  8. :loop1
  9. for /f %%a in ('tasklist.exe /FI "IMAGENAME eq %taskname%" /FI "STATUS eq RUNNING" /FO TABLE /NH^|find.exe /i "%taskname%"') do (
  10. echo.发现%taskname%正在运行,
  11. echo.等待%taskname%运行结束...
  12. echo.
  13. echo.
  14. goto :loop2
  15. )
  16. ping 127.1 -n 2 >nul 2>nul
  17. goto :loop1
  18. :loop2
  19. for /f %%a in ('tasklist.exe /FI "IMAGENAME eq %taskname%" /FI "STATUS eq RUNNING" /FO TABLE /NH^|find.exe /i "没有"') do (
  20. echo.%taskname%未运行,
  21. echo.等待%taskname%运行...
  22. echo.
  23. echo.
  24. goto :loop3
  25. )
  26. ping 127.1 -n 2 >nul 2>nul
  27. goto :loop2
  28. :loop3
  29. md 1
复制代码

[ 本帖最后由 wbance 于 2011-3-18 21:46 编辑 ]

TOP

括起来了  嘿嘿。。

TOP

  1. @echo off
  2. set taskname=calc.exe
  3. :a
  4. set a=
  5. tasklist|find /i "%taskname%">nul 2>nul&&set b==||set a==
  6. if "%a%%b%"=="==" goto:b
  7. ping 127.1 -n 2 >nul
  8. goto:a
  9. :b
  10. echo;已结束进程&pause
复制代码

[ 本帖最后由 hanyeguxing 于 2011-3-18 21:53 编辑 ]
1

评分人数

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

TOP

谢谢斑竹。问题解决  O(∩_∩)O谢谢

TOP

返回列表