3 回答
TA贡献1829条经验 获得超7个赞
这是我用来执行批处理文件的内容:
proc.StartInfo.FileName = target;
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.UseShellExecute = false;
proc.Start();
proc.WaitForExit
(
(timeout <= 0)
? int.MaxValue : timeout * NO_MILLISECONDS_IN_A_SECOND *
NO_SECONDS_IN_A_MINUTE
);
errorMessage = proc.StandardError.ReadToEnd();
proc.WaitForExit();
outputMessage = proc.StandardOutput.ReadToEnd();
proc.WaitForExit();
我不知道这是否可以帮到您,但是我没有问题的困扰。
TA贡献1770条经验 获得超3个赞
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
namespace VG
{
class VGe
{
[STAThread]
static void Main(string[] args)
{
Process proc = null;
try
{
string targetDir = string.Format(@"D:\adapters\setup");//this is where mybatch.bat lies
proc = new Process();
proc.StartInfo.WorkingDirectory = targetDir;
proc.StartInfo.FileName = "mybatch.bat";
proc.StartInfo.Arguments = string.Format("10");//this is argument
proc.StartInfo.CreateNoWindow = false;
proc.Start();
proc.WaitForExit();
}
catch (Exception ex)
{
Console.WriteLine("Exception Occurred :{0},{1}", ex.Message,ex.StackTrace.ToString());
}
}
}
}
TA贡献2036条经验 获得超8个赞
批处理文件做什么?您确定进程具有足够的特权来启动以执行批处理文件吗?服务可能会受到限制。
另外,请确保在复制命令中是否正在执行类似我们的操作,以覆盖执行以下操作的文件:
echo Y | copy foo.log c:\backup\
另外,请确保使用批处理命令等的完整路径。如果批处理文件正在以某种“控制台”模式启动GUI应用程序,那么这也可能是一个问题。请记住,服务没有“桌面”(除非您启用了“与桌面交互”)才能绘制任何类型的窗口或消息框。在程序中,您可能需要打开stdout和stderr管道,并在执行过程中从中读取它们,以防收到任何错误消息或任何其他内容。
WebServices可能会以IUSR帐户或匿名帐户的身份执行,因此这可能对您来说是个问题。如果您在控制台中运行它时可以运行,那只是第一步。:)
我不记得是System.Diagnostics。是否仅在调试中可用。可能不是,但是其中一些可能是。我必须检查一下。
希望这能给您一些想法。
拉里
- 3 回答
- 0 关注
- 368 浏览
添加回答
举报