【问题标题】:Robocopy: copy files preserving folder structure but adding a subfolder [closed]Robocopy:复制文件保留文件夹结构但添加子文件夹[关闭]
【发布时间】:2014-03-03 14:18:49
【问题描述】:

我需要将包含文件子文件夹的文件夹复制到另一台机器上的共享文件夹中。在此期间,脚本应在每个目标文件夹中创建一个自定义子文件夹并将文件放在那里。

我希望这个例子能阐明任务:

  1. 对于以下源文件夹:

    --Logs
    ----Application
    ------Service
    --------Log1.txt
    --------Log2.txt
    ------WebSite
    --------Log1.txt
    --------Log2.txt
    
  2. 目标文件夹应按以下方式创建:

    --Logs
    ----Application
    ------Service
    --------Machine1
    ----------Log1.txt
    ----------Log2.txt
    ------WebSite
    --------Machine1
    ----------Log1.txt
    ----------Log2.txt
    

正如您在底部看到的那样,子文件夹 Machine1 已创建。 您能否提供一个执行该操作的 PowerShell 脚本示例?

我调查了 ROBOCOPY 命令中的输入参数。看起来它不允许那么简单。

我也知道我可以遍历所有文件夹结构,创建所需的子文件夹并将文件复制到每个子文件夹。但这似乎是一条太“长”的路。所以我想知道我是否遗漏了什么。也许有更好的智能方法来做到这一点。

【问题讨论】:

  • 你运行的是什么版本的 Powershell?
  • @mjolinor 2.0 版

标签: windows powershell command-line directory robocopy


【解决方案1】:

我建议使用robocopy 来复制子文件夹的内容:

$srcBase = 'C:\some\Logs\Application'
$dstBase = 'D:\other\Logs\Application'

Get-ChildItem $srcBase | ? { $_.PSIsContainer } | % {
  $dst = "$dstBase\$($_.Name)\Machine1"

  & robocopy $_.FullName $dst /e
}

【讨论】:

  • 这个不会在目的地创建相同的文件夹结构。实际上,它直接在根文件夹内创建所有子文件夹。但我需要一棵与源代码完全相同的树(请参阅我的问题中的示例)
  • @Egor4eg 当我测试它时它工作得很好。请注意,您需要在 $dstBase 中包含公共父文件夹 (Logs\Application)。如果它仍然不适合您,请使用您当前使用的代码更新您的问题。
  • 是的,你是对的。它将适用于我的示例。我忘了提到几个“应用程序”文件夹是可能的。对于那个很抱歉。无论如何,我已经编写了脚本,您的评论很有帮助。将其标记为答案...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-18
  • 2019-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多