我的批处理文件过早关闭程序
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
,在:loop
和tasklist
之间使用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:处理服务器关闭的过早连接