2013-08-06 16 views
0

我想通過Jenkins運行一個簡單的批處理腳本(後者又調用VBscript)。我在我詹金斯執行腳本是:在後臺運行的可執行文件

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

的test.vbs是簡單的代碼它調用在控制檯模式

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一個exe:激活並顯示一個窗口。如果窗口被最小化或最大化,則系統將其恢復到其原始大小和位置。

我面對的問題是我無法看到cmd.exe和Product.exe安裝程序。雖然進程資源管理器顯示cmd.exe和Product.exe正在運行。我不明白爲什麼我沒有在前臺運行,只在後臺運行。

  1. 我怎樣才能讓exe在前臺運行?
  2. 當我嘗試直接在VM上運行時,我可以看到它在前臺運行。不能理解這種情況。有關於此的任何信息?

謝謝。

+0

該命令在前臺爲我啓動'CMD'窗口(雖然我沒有在Jenkins中運行它)。也許你可以設置窗口標題'objShell.Run「cmd/k title xyz&Product.exe ...」,1',然後通過'objShell.AppActivate「xyz」'把它帶到前臺。 –

+0

@AnsgarWiechers:當我不使用詹金斯時,雅同樣發生在我身上,它正常工作,但詹金斯出現問題。我也試過你的建議...沒有幫助... – Kriti

+0

然後問題是與詹金斯。對不起,幫不了你。 –

回答

-1

您可以使用.visible屬性來顯示正在運行的應用程序並將它們帶到前臺,例如

Dim objQtpApp 

Set objQtpApp = CreateObject("QuickTest.Application") 

'make QTP visible 
objQtpApp.Visible = True 
+0

['WshShell'](http://msdn.microsoft.com/en-us/library/aew9yb99%28v=vs.84%29.aspx)對象沒有'Visible'屬性。 –

0

你運行詹金斯從代理作爲Windows服務無頭:下啓動應用程序時我如何使用它的objShell.Visible =真

實例?我記得在這種情況下,GUI會有問題。您應該在添加從VM時使用jnlp運行代理。這對我來說很完美。

+0

代理僅與jnlp一起運行。 – Kriti

+0

我的經驗是在GUI應用程序中使用WScript.Shell.Exec。看看這篇文章:http://www.codeproject.com/Tips/507798/Differences-between-Run-and-Exec-VBScript –

0

這是另一種使用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,這並不那麼簡單)。你不必擁有完整的TITLE。我在這裏展示的是「Internet Explorer」,但我能夠使用我重定向到的網站的標題(在此示例中「Google」可以正常工作)。因此,如果您不想拉取您可能已經打開的應用程序的任何隨機實例,請儘可能具體。 A CMD.EXE TITLE不會是你最好的選擇。

AppActivate適用於CMD/COMMAND窗口,如前所述,您可以使用TITLE批處理文件命令指定唯一的窗口標題。