我的批处理文件过早关闭程序

Posted

技术标签:

【中文标题】我的批处理文件过早关闭程序【英文标题】:My batch file is closing a program too early 【发布时间】:2015-02-12 06:36:45 【问题描述】:

感谢那些花时间阅读我的问题的人。我是一名游戏玩家,想执行一些操作。首先,我想在单击程序时触发批处理文件,您是如何做到的,甚至有可能吗?基本上,激活游戏会触发批处理文件。 现在对于批处理文件问题,我想在激活游戏(这是一个 mmo)时执行 Xpadder,当我关闭游戏时,我希望关闭 Xpadder 的进程/服务。最终,它是自动触发、激活、等待、终止。 如果一切都可以完成,这就是我希望它进行的过程。

批处理文件:

@echo off

start "Blade" "C:\Users\user\Documents\Blade.xpadderprofile" Blade.xpadderprofile

ECHO Blade.xpadderprofile STARTED

start /w "C:\Program Files (x86)\game\games.exe" games.exe

ECHO games STARTED

taskkill /f /im Xpadder.exe

这确实有效,但问题是有两个带有 mmo 的“.exe”文件。我将启动游戏,它会过早关闭 Xpadder,因为一个启动器会启动另一个启动器/客户端。 Xpadder 适用于第一个启动器,但第一个启动器关闭,因此游戏将开始。我希望我对自己的解释足够清楚。

参考链接:How to automatically close App_A when I close App_B using batchfile

基本上,这与我的问题相同,但不是很清楚。让 Xpadder 一直运行到第二个启动器/客户端关闭而不是第一个的批处理代码是什么?

附言 游戏必须通过启动器打开,然后进入第二个启动器/客户端,否则将无法运行。 这是我认为的其他客户名称和路径:

C:\Program Files (x86)\game\gamer\bin\gam.exe

【问题讨论】:

检查my answer到类似的问题 我很抱歉,但我对此完全陌生......我应该更清楚一点。我不明白你的代码,有没有更简单的方法或者它必须是这样的。但请记住,当第二个启动器/客户端结束而不是第一个时,xpadder 必须结束。 在这一行中省略start /w start /w "C:\Program Files (x86)\game\games.exe" games.exe 这就是我所拥有的,但它不起作用。如果我双击批处理,它将启动游戏和 xpadder,但是我必须转到“播放”按钮。当我转到“播放”按钮时,它会关闭该启动器并启动游戏,这基本上会关闭 Xpadder,因为该启动器已关闭。游戏在玩时显然是“client.bin”而不是“.exe”所以 您可以编写一个goto 循环来运行tasklist /fi "WINDOWTITLE eq gamename" | find "gamename" && goto loop || taskkill /im "xpadder.exe" /f,在:looptasklist 之间使用ping -n 11 0.0.0.0 >NUL 以在每个循环中暂停10 秒。您可以尝试开始游戏,点击 Play,然后将其最小化(Win 元键 + M),如果您不知道,请查看任务栏按钮以获取其窗口标题。 【参考方案1】:

PsExec 小MS ulility 的使用怎么样?使用它,您的批次应该可以工作:

cmd /c psexec -d "Blade" "C:\Users\user\Documents\Blade.xpadderprofile" Blade.xpadderprofile  
start /w "C:\Program Files (x86)\game\games.exe" games.exe  
taskkill /f /im Xpadder.exe  

psexec.exe 文件必须放在系统变量 WINDIR 或 PATH 中列出的文件夹中,否则,您应该使用完整路径调用它,例如。 *C:\Program Files\Others\pstools.exe".

如果你有钱,你可以添加@echo off、盐、胡椒或一些绿色塔巴斯科:D

【讨论】:

以上是关于我的批处理文件过早关闭程序的主要内容,如果未能解决你的问题,请参考以下文章

Bash Expect Telnet:处理服务器关闭的过早连接

如何使批处理文件仅在应用程序关闭后运行

腐败的表格数据:过早结束

批处理文件不会杀死进程并关闭控制台窗口

如何用dat批处理文件关闭某端口对应程序-Windows自动化命令

'ping'不被识别为内部或外部命令可操作程序或批处理文件错误[关闭]