【问题标题】:CMD prompt - bat file - Taskkill command ignores start /waitCMD 提示符 - bat 文件 - Taskkill 命令忽略启动/等待
【发布时间】:2017-06-10 20:49:39
【问题描述】:

这是我的 bat 文件中的脚本:

cd "C:\Program Files (x86)\Steam\Steamapps\common\F13game\"

Start F13theGameRemap.exe

cd "C:\Program Files (x86)\Steam\steamapps\common\F13Game\SummerCamp\Binaries\Win64\"

Start /WAIT SummerCamp.exe

Start /WAIT Taskkill /f /im F13theGameRemap.exe

exit

我只想运行第一个程序,然后运行第二个程序。当第二个程序“summercamp.exe”退出时,我希望第一个程序“F13thegameremap.exe”退出。

这个脚本现在的工作方式是Taskkill立即忽略summercamp.exe的启动/等待命令并立即关闭F13theGameRemap.exe。

我该如何解决这个问题?

【问题讨论】:

  • 您的结论是错误的,因为 taskkill 忽略了 /wait。 SummerCamp.exe 是立即将控制权返回给批处理的,一些 .exe 文件可以做到这一点。所以尝试在没有启动的情况下运行 SummerCamp.exe,如果这无助于插入一个监督循环,检查游戏是否仍在使用 TaskList 运行。
  • 我不知道什么是监督循环。我尝试删除 Start /wait ,它仍然做同样的事情。

标签: windows batch-file cmd


【解决方案1】:

类似这样的:

@Echo off
Cd /D "C:\Program Files (x86)\Steam\Steamapps\common\F13game\"

Start F13theGameRemap.exe

Cd /D "C:\Program Files (x86)\Steam\steamapps\common\F13Game\SummerCamp\Binaries\Win64\"

Set "App2=SummerCamp.exe"
Start /WAIT %App2%

:loop
Timeout /t 1 >NUL
tasklist.exe /FI "ImageName eq %App2%" /NH |find /i "%App2%" >NUL && Goto :loop

Start /WAIT Taskkill /f /im F13theGameRemap.exe

:loop 将检查 %App2% aka SummerCamp.exe 是否仍在运行,延迟 1 秒。

【讨论】:

  • SummerCamp.exe 显然在生成真实进程后退出。幸运的是,它使用相同的可执行文件,或者至少一个具有相同名称的可执行文件,因此它可以在任务列表中轮询它。如果它产生了不同的可执行文件,那么这种方法就行不通了。
  • 仅供参考,SummerCamp.exe 或 taskkill.exe 不需要使用 start /wait。它是通过“App Paths”注册表项查找可执行文件所必需的,但在这种情况下,您是从工作目录和PATH 运行的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-17
  • 2014-12-26
  • 1970-01-01
  • 2011-10-25
  • 2016-01-23
  • 1970-01-01
相关资源
最近更新 更多