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

问题描述 投票:0回答:1

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

c# powershell console-application xcopy file-copying
1个回答
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的更多详细信息,请参阅以下链接 -

© www.soinside.com 2019 - 2024. All rights reserved.