提前感谢您的时间。
我正在开发一个应用程序来自动执行我每天必须检查的一些事情。
其中一个是确保我们所有的每日机器人成功发生。
我遇到了解决将此问题传达给我的程序的最佳方法的问题。我已经查看了Robocopy使用的各种退出代码,这些代码非常有用,但无论如何都要输出到文件中,并且无论如何都要知道它与哪个备份相关联?
对不起,如果这个含糊不清,请告诉我任何其他可能有用的信息。
谢谢, 将
答案 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
”中。如果您想找出问题出在哪里,这很有用。