2013-04-04 135 views
0

我有批处理文件运行批处理文件:用下面的代码sample.bat:无法从Windows服务应用程序

@ECHO OFF 

SET /a INT1=%1 
SET /a INT2=%2 

SET /a ANSWER=INT1*INT2 

ECHO %ANSWER% 

PAUSE 

还创造了另一个批处理文件:cmdSample.bat与下面的代码:

样品2 4

所以,如果我运行cmdSample.bat文件,它会给我正确的结果。

后,我已创建1和Windows服务应用程序中,我试图调用批处理文件,并通过命令,如下所示:

private void DoWork() 
    { 
     try 
     { 
      string fname = @"C:\Users\of4\Desktop\sample.bat"; 
      string cmd = "sample 2 4"; 
      RunSampleBatch(fname, cmd); 
     } 
    } 

    private void RunSampleBatch(string fname, string cmd) 
    { 
     Process p = new Process(); 
     p.StartInfo.FileName = fname; 
     p.StartInfo.Arguments = cmd; 
     p.Start(); 
    } 

谁能帮助我,为什么我不能够执行批处理通过Windows服务应用程序文件?

在此先感谢..

回答

0

你的参数了,你是给“样品”作为第一个参数sample.bat。

您的服务可能不在您的用户帐户下运行。也许它甚至不能访问你的文件。

您需要使用cmd.exe启动批处理文件。你可以找到一个很好的解释here

你想做什么?从Windows服务运行批处理文件没有多大意义,您将无法看到结果。也许你应该先尝试一个控制台应用程序来调试你的问题。

您可能还想在下次发布实际错误,因为以上所有仅仅是猜测,我们需要更多的信息而不仅仅是“不起作用”。

+0

感谢您的回复 有我的错误。修改后的代码是: 而我必须将cmdSample.bat文件放在应用程序的bin \ debug文件夹中。然后它工作正常。 但是当我尝试使用安装项目安装Windows服务时,它不起作用。它需要默认路径为:C:\ WONDOWS \ System32下 – Alpa 2013-04-04 07:12:09

+0

修改后的代码: 私人无效ScheduledProcess() { 尝试 { 串CMD = “cmdSample.bat”; RunSampleBatch(cmd); } } 私人无效RunSampleBatch(串CMD) { 的ProcessStartInfo ProcessInfo =新的ProcessStartInfo(); ProcessInfo = new ProcessStartInfo(“cmd.exe”,“/ c”+ cmd); Process.Start(ProcessInfo); } – Alpa 2013-04-04 08:36:17

+0

“不起作用”不是有效的错误描述。你需要提出一个很好的问题来帮助你。 – nvoigt 2013-04-04 09:46:09

相关问题