我想使用C#将包含50GB文件的文件夹移动到共享文件夹。 使用FileInfo CopyTo方法迭代目录并复制每个文件似乎不是我的最佳选择。我试过XCOPY Windows Command进行复制。但我个人并不喜欢打电话给外部应用程序的想法,微软可能会在未来的任何时候撤回该应用程序。 我的第三个选择是使用Windows PowerShell cmdlet Move-Item。
Move-Item -Path D:\Files\Server-01 -Destination \\NAS-Storage-01\Backups\Server-01\ServerFiles
有人能用C#告诉我使用这种方法的利弊吗?
答案 0 :(得分:4)
xcopy.exe
是一个长期存在的Windows控制台应用程序,无法在任何地方使用。
这些是我们的一些选择:
Directory.MoveTo
:这不适用于不同的网络路径。
递归移动每个文件和子目录:如果有多个文件和子目录,这可能需要很长时间。
使用控制台应用程序xcopy.exe
;但是,顾名思义,只执行复制而不是移动,因此在成功复制后您将需要一个额外的步骤来删除源目录。
以下是使用xcopy
从C#调用Process.Start
的示例代码:
ProcessStartInfo Info = new ProcessStartInfo();
Info.Arguments = "/C xcopy D:\Files\Server-01 \\NAS-Storage-01\Backups\Server-01\ServerFiles";
Info.WindowStyle = ProcessWindowStyle.Hidden;
Info.CreateNoWindow = true;
Info.FileName = "cmd.exe";
Process.Start(Info);
有关在C#中使用xcopy
的详细信息,请参阅以下链接 -