通过windows 's应用程序报告Robocopy成功/失败

本文关键字:Robocopy 报告 成功 失败 应用程序 windows 通过 | 更新日期: 2023-09-27 17:49:14

感谢您的宝贵时间。

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

其中一个是确保我们每天的机器人复制都成功进行。

我有问题,找出最好的方式来沟通我的程序。我已经研究了Robocopy使用的各种退出代码,这将非常有用,但是是否有办法将其输出到文件中,并且是否有办法知道它与哪个备份相关联?

如果这是模糊的,请告诉我任何其他可能有用的信息。

谢谢,将

通过windows 's应用程序报告Robocopy成功/失败

如果您从应用程序启动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

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

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

然后尝试日志选项以获得有用的详细信息(参见http://ss64.com/nt/robocopy.html)

你可以这样做:

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);
}

创建一个像这样的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"中拥有整个日志。