【问题标题】:Move-Item cmdlet to move a folder using C#Move-Item cmdlet 使用 C# 移动文件夹
【发布时间】:2018-06-06 14:15:32
【问题描述】:

我想使用 C# 将包含 50GB 文件的文件夹移动到共享文件夹。 遍历目录并使用 FileInfo CopyTo 方法复制每个文件对我来说似乎不是最佳选择。我尝试使用 XCOPY Windows 命令进行复制。但我个人不喜欢调用外部应用程序的想法,微软可能会在未来随时撤回。 我的第三个选择是使用 Windows PowerShell cmdlet Move-Item。

Move-Item -Path D:\Files\Server-01 -Destination \\NAS-Storage-01\Backups\Server-01\ServerFiles

谁能告诉我使用 C# 使用这种方法的利弊?

【问题讨论】:

  • 如果你想移动文件,为什么不 FileInfo.MoveTo
  • @SirRufo 它显示大文件 (40Gb) 的文件存在异常。它复制了一个 0Kb 版本的文件,并抛出异常。

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


【解决方案1】:

xcopy.exe 是一个长期存在的 Windows 控制台应用程序,不会出现在任何地方。

我们有以下几种选择:

  • Directory.MoveTo:这不适用于不同的网络路径。

  • 递归移动每个文件和子目录:如果有多个文件和子目录,这可能需要很长时间。

  • 使用控制台应用程序xcopy.exe;然而,顾名思义,只执行复制而不是移动,因此在成功复制后您需要一个额外的步骤来删除源目录。

这是从 C# 调用 xcopy 的示例代码,使用 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 的更多详细信息,请参阅下面的链接-

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-02
    • 2016-12-19
    • 2022-01-15
    • 1970-01-01
    • 2017-09-18
    • 1970-01-01
    • 2013-08-01
    • 1970-01-01
    相关资源
    最近更新 更多