通过windows 's应用程序报告Robocopy成功/失败
本文关键字:Robocopy 报告 成功 失败 应用程序 windows 通过 | 更新日期: 2023-09-27 17:49:14
感谢您的宝贵时间。
我正在开发一个应用程序,使我每天必须检查的一些事情自动化。
其中一个是确保我们每天的机器人复制都成功进行。
我有问题,找出最好的方式来沟通我的程序。我已经研究了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
"中拥有整个日志。