0

我有一个场景,我必须创建一个 Windows 服务,该服务将检查批处理文件是否未运行,那么它应该执行该批处理文件。

此外,我的批处理文件用于使用 Selenium 进行应用程序检出自动化。

当我创建该服务时,不知何故批处理文件没有执行并且无法启动硒。当我在任务管理器中看到相同的内容时,我可以看到一个 cmd 实例正在运行,但它无法运行我的 selenium。

我的项目代码:计时器设置为 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"

此代码将定期检查如果批处理文件未在执行中,那么我的服务将开始执行,否则将不执行任何操作。

4

1 回答 1

1

不确定上下文这么少......但我要检查的第一件事是执行 bat 文件相对于 bat 文件使用的文件的路径;如果您从另一个程序调用 bat 文件,它通常会从该程序继承环境文件夹 - 这是大多数人不期望的。(对于 Windows 服务,这是 windows\system32)检查是否是这种情况的最简单方法是在 bat 文件的第一行中明确设置路径(例如 cd [path of bat file] )

于 2012-07-18T12:41:35.600 回答