jenkins 在后台运行的可执行文件

vwkv1x7d  于 2022-11-02  发布在  Jenkins
关注(0)|答案(4)|浏览(186)

我正在尝试通过Jenkins运行一个简单的批处理脚本(它反过来调用一个VBscript)。我在Jenkins中执行的脚本是:

cd "C:\Product\workspace"
cscript Test.vbs

vbs是一个简单的代码,它在控制台模式下调用exe。

Dim objShell
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "cmd /K C:\Product\workspace\Product.exe -c -dir C:\ProductDir", 1
Set objShell = Nothing
  • 参数1:激活并显示一个窗口。如果窗口被最小化或最大化,系统会将其恢复到原来的大小和位置。*

我所面临的问题是我无法看到cmd.exe和Product.exe安装程序。虽然进程资源管理器显示cmd.exe和Product.exe正在运行。我不明白为什么我没有在前台运行,而只在后台运行。
1.如何让exe在前台运行?
1.当我尝试直接在VM上运行时,我可以看到它在前台运行。无法理解这种情况。有什么线索吗?

  • 谢谢-谢谢
sxissh06

sxissh061#

我想我迟到了,但我这样做了,它的工作:

Dim objShell
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "cmd /K C:\Product\workspace\Product.exe -c -dir C:\ProductDir", 0, False Rem 0: run in background, False: exit without waiting process to stop, True to wait for process
Set objShell = Nothing
laximzn5

laximzn52#

您可以使用.visible属性来显示正在运行的应用程序并将其置于前台,例如objShell.Visible = True
下面是我在启动应用程序时如何使用它的示例:

Dim objQtpApp 

Set objQtpApp = CreateObject("QuickTest.Application")

'make QTP visible
objQtpApp.Visible = True
2g32fytz

2g32fytz3#

您是否在Windows上将Jenkins从属代理作为headless服务运行?我记得在这种情况下GUI会有问题。当您添加从属VM时,您应该使用jnlp运行代理。这对我来说非常合适。

mccptt67

mccptt674#

下面是使用VBScript剥猫皮的另一种方法。
我在尝试调度一个任务将Internet Explorer启动到前台时遇到了同样的问题。我使用WScript的Run方法和3窗口选项来强制它最大化。我就是不能强制它出现在前台。
我最终使用了WScript的AppActivate方法,技巧是在循环中监视AppActivate的返回值,以确保在使用AppActivate将应用程序带到前台之前,应用程序以正确的TITLE完全启动。
AppActivate Method

以下是我的示例脚本:

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "iexplore.exe https://www.google.com", 3, false
WScript.Sleep 2000
While WshShell.AppActivate("Internet Explorer") = FALSE
    WScript.Sleep 1000
Wend
WshShell.AppActivate "Internet Explorer"
WScript.Quit

=========================
注意事项:AppActivate将为应用程序TITLE选择最接近的匹配项(或进程ID,这不是那么简单)。您不必具有完整的标题。我在此处显示“Internet Explorer”,但我可以使用要重定向到的网站的标题(“Google”在本例中可以正常工作)。因此,如果您不想调出已经打开的应用程序的任何随机示例,尽可能具体。CMD.EXE TITLE不是最好的选择。
AppActivate特别适用于CMD/COMMAND窗口,因为(如前所述)您可以使用TITLE批处理文件命令来指定唯一的窗口标题。

相关问题