Move-Item cmdlet使用C#移动文件夹

时间:2017-12-25 07:40:39

标签: c# powershell console-application xcopy file-copying

我想使用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#告诉我使用这种方法的利弊吗?

1 个答案:

答案 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的详细信息,请参阅以下链接 -