Board logo

标题: [其他] 求一个批处理能检测另外一个指定的批处理是否正在运行 [打印本页]

作者: 小渣飞    时间: 2017-12-23 23:35     标题: 求一个批处理能检测另外一个指定的批处理是否正在运行

求一个批处理能检测另外一个指定的批处理是否正在运行
作者: hlzj88    时间: 2017-12-24 07:54

本帖最后由 hlzj88 于 2017-12-24 07:57 编辑

批处理一般不可以检测到另外的批处理。是因为假设你开十个cmd窗口,是没法判断你要检测谁是你要的。
但是如果你加一个判断标志文件,就可以检测到指定批处理是否在运行。
  1. @echo off
  2. echo.>d:\标志.txt
  3. ......
  4. del /q d:\标志.txt
  5. exit
复制代码
例子1这样我们只需要检测是否存在d:\标志.txt,就可以判断指定批处理是否正在运行。
  1. @echo off
  2. ......
  3. echo.>d:\标志.txt
  4. exit
复制代码
例子2这样我们只需要检测是否存在d:\标志.txt,就可以判断指定批处理是否运行完毕。
作者: 小渣飞    时间: 2017-12-24 11:46

谢谢了,那我问一下可不可以利用相似的命令比如说 taskkill /eq之类的
作者: hlzj88    时间: 2017-12-24 13:06

假设一个批处理只 调用一个findstr ,是可以kill的,但批处理整体的功能受损,如同时有两个findstr,是不能区分和kill的。
作者: 小渣飞    时间: 2017-12-24 13:25

好的谢谢啦
作者: Batcher    时间: 2017-12-24 19:08

待检测的批处理代码里面使用title命令设置一个标题
检测批处理代码里面使用 tasklist 命令找到判断那个title对应的进程是否存在
作者: 老刘1号    时间: 2017-12-24 20:40

本帖最后由 老刘1号 于 2017-12-24 20:42 编辑

回复 1# 小渣飞
回复 6# Batcher
回复 4# hlzj88
  1. wmic process where name="cmd.exe" get commandline /value
复制代码
得到所有正在运行的CMD的参数
直接打开bat的话参数基本是固定的,类似
CommandLine="C:\Windows\System32\cmd.exe" /C "R:\TEMP\uh1xsild.3xk.BAT"
这样




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