如何使批处理文件仅在应用程序关闭后运行
Posted
技术标签:
【中文标题】如何使批处理文件仅在应用程序关闭后运行【英文标题】:How to make batch file run only after application has closed 【发布时间】:2021-08-16 08:43:11 【问题描述】:这个用例是不必要的定义,但我对脚本产生了兴趣,我正在努力学习。我发现当尝试在让我的生活更轻松但不是超级重要的事情上练习时,我的动力最有效!
我创建了一个执行以下操作的批处理文件:
启动 Steam 游戏 将我的显示器切换到我的电视(我的电视在我的电脑旁边的墙上) 将我的音频源切换到我的耳机效果很好,但我想改进它,因为当我玩完游戏时,显示器仍然在我的电视上。我正在寻找的是一种仅在(游戏)不再运行以将图像移回我的显示器后才运行批处理文件的方法。
本质上,它会:
-
运行批处理文件。
游戏打开
显示器移动到电视(我使用一个名为 MultimonitorTool 的小应用程序通过一个名为 tv.cfg 的设置配置来执行此操作)
音频源更改为耳机(我使用 SoundSwitch 和游戏配置文件来设置源)
玩完游戏退出。
将显示器移回显示器的批处理文件(已将其配置为 pc.cfg)运行,但只是因为 game.exe 不再打开。
我在玩“/wait”,但我无法让它工作。在下面的脚本中,前 2 个命令用于打开 Notepad.exe(为测试而更改),然后 TV.cfg 将图像移动到电视。这是关于等待 Notepad.exe 运行 PC.cfg 以将图像移回我的显示器的部分,这不起作用。
我将应用程序更改为记事本只是为了测试,这就是我正在尝试的:
@echo off
cd C:\Windows\system32
start Notepad.exe
cd C:\Users\Rob\Downloads\MultiMonitorTool
start MultiMonitorTool.exe /LoadConfig "C:\Users\Rob\Downloads\MultiMonitorTool\TV.cfg"
cd C:\Users\Rob\Downloads\MultiMonitorTool
start MultiMonitorTool.exe /LoadConfig "C:\Users\Rob\Downloads\MultiMonitorTool\PC.cfg" /wait "C:\Windows\system32\Notepad.exe"
exit
有没有一种简单的方法来实现我想要做的事情? (我完全是个菜鸟,没有受过任何这些东西的教育!这纯粹是一种爱好)
【问题讨论】:
您检查过 Windows 任务计划程序吗? 简单明了,不要在批处理文件的最后一个命令中使用START
命令。它将等待最后一次运行的程序完成,然后在您关闭程序后执行任何命令。
a) 切换到电视,b) start /wait notepad.exe
,c) 切换回显示器。注意:它确实适用于notepad
,并且它可能适用于您的游戏(或不适用 - 取决于游戏的编写方式)。如果没有,检查游戏是否仍在运行(tasklist
在循环中)是要走的路。
感谢 Stephan,尝试了您的建议,并且(至少对于记事本而言)它正在工作。等我下班回家后我会再玩弄它 lol
【参考方案1】:
为了知道应用程序是否正在运行,您可以使用tasklist
,可以使用以下命令找到更多信息:
tasklist /?
您编写了一个while
循环来检查您的应用程序是否正在运行(不要忘记放置一个timeout 1
,以便让您的循环等待一秒钟,否则您可能会“过度列出”您的PC :-)) .
可以在here找到一个例子。
【讨论】:
我尝试过,但无法理解它,大声笑,你有没有机会重新调整我开始使用的脚本以包含任务列表/当你提到?以上是关于如何使批处理文件仅在应用程序关闭后运行的主要内容,如果未能解决你的问题,请参考以下文章