2012-07-18 153 views
0

我有一個場景,我必須創建一個Windows服務,它將檢查如果批處理文件沒有運行,那麼它應該執行該批處理文件。批處理文件沒有通過Windows服務執行

此外,我的批處理文件用於使用Selenium for Application checkout的自動化。

當我創建該服務,以某種方式批處理文件不執行,不能啓動硒。當我在任務管理器中看到相同時,我可以看到一個cmd實例正在運行,但無法運行我的硒。

我的項目代碼:定時器設置爲1分鐘

private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e) 
{ 
    if (!File.Exists(ConfigurationManager.AppSettings["testFilePath"])) //To check whether batch file is running or not 
    { 
     System.Diagnostics.Process proc = new System.Diagnostics.Process(); // Declare New Process 
     proc.StartInfo.FileName = ConfigurationManager.AppSettings["BatchFilePath"]; 
     proc.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 
     proc.StartInfo.CreateNoWindow = true; 
     proc.Start(); 
     proc.WaitForExit(); 
    } 
} 

批處理文件是這樣的:

copy C:\AutomatedTests\AHD\testingWS.txt C:\AutomatedTests\AHD\AHDExecutionService\testingWS.txt 

start cmd /k java -jar "C:\AHS_Automation\Release\UnifiedBillingSystem\Selenium RC\selenium-server-1.0.3\selenium-server.jar" 

此代碼將定期檢查,如果批處理文件是不是在執行然後我服務將開始執行,否則將無能爲力。

+1

提供正在運行批處理文件的代碼。 – 2012-07-18 12:06:02

+0

@EstefanyVelez:我用我的代碼更新了這個問題。 – 2012-07-18 12:48:58

+1

嘗試'CreateNoWindow = false' – 2012-07-18 13:28:06

回答

1

不確定這麼少的上下文......但我要檢查的第一件事是執行bat文件相對於bat文件使用的文件的路徑;如果您從另一個程序調用bat文件,它通常會繼承該程序的環境文件夾 - 這是大多數人不希望的。 (對於windows服務,這是windows \ system32)檢查這種情況的最簡單方法是在bat文件的第一行中明確設置路徑(例如cd [bat文件路徑])

+0

我已經添加了windows服務的代碼以及需要執行的批處理文件。 – 2012-07-18 12:52:12

相關問題