批处理文件 - 启动程序 ON TOP

批处理文件 - 启动程序 ON TOP

我有一个简单的 .bat 文件,它可以在 Firefox 中打开一个页面,并且我在任务计划程序中创建了一个任务,以便每天在特定时间执行该任务。

@Echo off
"C:\Program Files\Mozilla Firefox\firefox.exe" https://google.com
EXIT

问题是,当打开其他程序或文件夹时,Firefox 会在其下方打开。有什么方法可以在上方启动 Firefox 吗?

答案1

如果 Firefox 未运行,请使用 bat 脚本来调用它:

@echo off

title <nul && title ...\"%~nx0"
%__AppDir__%mode.com con: cols=50 lines=10

%__AppDir__%tasklist.exe | find /i "firefox.exe" >nul || (
start "" /b "C:\Program Files\Mozilla Firefox\firefox.exe" https://google.com)

并添加/使用 VBS 代码将 Firefox 带到前台:

WScript.CreateObject("WScript.Shell").AppActivate("firefox")

在混合模式下使用改编的代码+

<!-- :

@echo off

title <nul && title ...\"%~nx0" 
%__AppDir__%mode.com con: cols=50 lines=10

%__AppDir__%tasklist.exe | find /i "firefox.exe" >nul || (
start "" /b "C:\Program Files\Mozilla Firefox\firefox.exe" https://google.com)

%__AppDir__%timeout.exe /t 2 /nobreak | echo=// waiting 2 seconds to make sure firefox loaded
%__AppDir__%wScript.exe "%~dpnx0?.wsf" & %__AppDir__%move.com nul 2>&0 & goto :eOf || exit /b 

-->

<job><script language = "vbscript">WScript.CreateObject("WScript.Shell").AppActivate("firefox")</script></job>

混合布局的简单解释是:

<!-- :
       bat code and also vbs comment
-->

<job>
       vbs script code  
</job>

观察:将此脚本另存为或some_file_name.cmdsome_file_name.bat


// 一些链接可以帮助您熟悉涉及 bat 和 vbs 的混合代码:
-语法
-例子

// 问题:
-如何在批处理脚本中调用或嵌入 VBS
-是否可以在批处理文件中嵌入并执行 VBScript 而不使用临时文件?

答案2

你可能会成功

@Echo off
"C:\Program Files\Mozilla Firefox\firefox.exe" https://google.com
ping 127.0.0.1 -n 1 > nul
EXIT

我不知道它对我有用的原因,我只是碰巧遇到了和你同样的问题,应用程序窗口在 Windows 10 系统上停留在后面。我已经放弃了,想在批处理中输出一个提示,提示应用程序窗口可能被隐藏了。为了在批处理窗口关闭之前短暂保持提示可见(并且缺少批处理文件的延迟命令),我想ping 127.0.0.1 -n 6 > nul在启动应用程序并输出提示后使用常见的方法(延迟五秒,以一秒的间隔向本地主机发送六次 ping,并将输出重定向到 nul,因为它在这里不感兴趣)。由于现在应用程序是在顶部打开的,我删除了提示并将延迟减少到零秒(一次 ping)。

大概除了 ping 之外的其他命令也适合确保窗口在前台打开,但是内部命令 exit 和 echo 不适合。

相关内容