通过Window的应用程序报告Robocopy成功/失败

时间:2014-03-10 16:18:40

标签: c# exit-code robocopy

提前感谢您的时间。

我正在开发一个应用程序来自动执行我每天必须检查的一些事情。

其中一个是确保我们所有的每日机器人成功发生。

我遇到了解决将此问题传达给我的程序的最佳方法的问题。我已经查看了Robocopy使用的各种退出代码,这些代码非常有用,但无论如何都要输出到文件中,并且无论如何都要知道它与哪个备份相关联?

对不起,如果这个含糊不清,请告诉我任何其他可能有用的信息。

谢谢, 将

4 个答案:

答案 0 :(得分:1)

您可以将Robocopy输出写入文件并读取,如

robocopy c:\Test\ c:\temp /LOG+:myLogFile

然后尝试使用日志选项来获得有用的详细程度(请参阅http://ss64.com/nt/robocopy.html

答案 1 :(得分:1)

如果您从应用程序启动robocopy进程,则可以从那里检查退出代码。

Process myProcess = null;

// Start the process.
myProcess = Process.Start("robocopy ....");

myProcess.WaitForExit(1000);

Console.WriteLine("Process exit code: {0}",  myProcess.ExitCode);

http://msdn.microsoft.com/en-us/library/system.diagnostics.process.exitcode(v=vs.110).aspx

答案 2 :(得分:0)

你可以这样做:

public static void Main()
{
    // Prepare the process.
    ProcessStartInfo startInfo = new ProcessStartInfo();
    startInfo.CreateNoWindow = false;
    startInfo.UseShellExecute = false;
    startInfo.FileName = "robocopy.exe";
    startInfo.WindowStyle = ProcessWindowStyle.Hidden;
    startInfo.Arguments = "WHATEVER YOU NEED"

    // Start process and wait for it to end
    Process exeProcess = Process.Start(startInfo)
    exeProcess.WaitForExit();

    // Display what the exit code was
    Console.WriteLine();
    Console.WriteLine("Process exit code: {0}", exeProcess.ExitCode);
}

答案 3 :(得分:0)

创建如下Robocopy进程:

string command = $"Robocopy {sourcePath} {targetPath} /MIR /w:1 /r:10";
var copyTask = new Process()
{
    StartInfo = new ProcessStartInfo()
    {
        FileName = "CMD.exe"
        Arguments = $"/c {command}", 
        UseShellExecute = false,
        RedirectStandardOutput = true, 
        CreateNoWindow = true
    }
};

像这样使用它:

copyTask.Start()
string Output = copyTask.StandardOutput.ReadToEnd();
copyTask.WaitForExit();

现在,整个日志都在“ string output”中。如果您想找出问题出在哪里,这很有用。