【发布时间】:2010-10-25 10:44:58
【问题描述】:
我正在尝试在文件中运行命令行程序和管道。该命令在命令行上运行良好,但我似乎无法让它与 C# 中的 Process 对象一起使用。这是我发出的命令:
"C:\Servers\CollabNet Subversion Server\svnadmin" 加载 C:\Repositories\TestLoad 除了上面的命令之外,此函数适用于我传递给它的所有其他命令: 我已经尝试了这个功能的几种不同组合,但我无法让它工作。我不断收到“系统找不到指定的文件”消息。我已经做了大约一个星期了,我想我需要一些眼睛来看看我做错了什么。public static bool ExecuteSvnCommand( string command, string arguments, out string result, out string errors )
{
bool retval = false;
string output = string.Empty;
string errorLines = string.Empty;
Process svnCommand = null;
var psi = new ProcessStartInfo( command );
psi.RedirectStandardOutput = true;
psi.RedirectStandardError = true;
psi.WindowStyle = ProcessWindowStyle.Hidden;
psi.UseShellExecute = false;
psi.CreateNoWindow = true;
try
{
Process.Start( psi );
psi.Arguments = arguments;
svnCommand = Process.Start( psi );
StreamReader myOutput = svnCommand.StandardOutput;
StreamReader myErrors = svnCommand.StandardError;
svnCommand.WaitForExit();
if ( svnCommand.HasExited )
{
output = myOutput.ReadToEnd();
errorLines = myErrors.ReadToEnd();
}
// Check for errors
if ( errorLines.Trim().Length == 0 )
{
retval = true;
}
}
catch ( Exception ex )
{
string msg = ex.Message;
errorLines += Environment.NewLine + msg;
}
finally
{
if (svnCommand != null)
{
svnCommand.Close();
}
}
result = output;
errors = errorLines;
return retval;
}
【问题讨论】:
标签: c# command-line