我正在寻找一个软件(可以是 BAT 脚本),它可以在运行程序之前检查程序实例是否正在运行。如果软件/脚本检测到程序未运行,则应该运行该程序,否则它不应该执行任何操作。
注意:我将要运行的程序(优酷) 在运行自身之前,没有检测来检查其自身实例是否已在运行。
我之所以问这个问题是因为我目前正在使用一个软件(网络) 如果它检测到我的互联网连接的带宽在一段时间内没有使用,它就会运行 uTorrent(在我的情况下,我将其设置为如果它检测到在 5 分钟内下载和上传了 50 KB 或更少的数据,就运行 uTorrent)。
但是,它没有在调用程序之前检查程序是否已在运行的功能。如果它在 uTorrent 已在运行的情况下运行 uTorrent,则 uTorrent 的窗口会移到屏幕前面,从而窃取窗口焦点,如果您正在窗口上工作并且不希望另一个窗口移到屏幕前面,这可能会分散您的注意力。
仅当 uTorrent 尚未运行时,uTorrent /MINIMIZED 参数才能正常工作。
或者是否有人知道其他软件可以执行我当前正在使用的软件的功能,只不过它会在调用 uTorrent 之前检查它是否已在运行?
编辑:我想补充一点,如果软件/脚本以最小化或隐藏状态运行,而不是转到前台或窃取窗口焦点,那就更好了。此外,软件或 BAT 脚本最好在完成任务后自行退出。
答案1
也许是这样的?
任务列表 | 查找“programname.exe” 如果错误级别 1 c:\path\to\programname.exe
答案2
这几乎肯定可以在批处理文件中完成,但是(像任何非平凡的事情一样)这并不容易。
但是 PowerShell 使这变得简单:
if (-not (Get-Proceess "Name")) {
#run new instance here
}
其中Name
被进程名称替换(这通常是不带 的文件名.exe
)。