繁体   English   中英

使用Powershell复制目录(和子目录)而不覆盖/删除文件

[英]using Powershell to copy a directory (and subdirectory(s)) withouth overwriting/removing files

从事一些个人项目。 我将音乐收藏放在3种不同的驱动器上(包括不同的计算机),包括我的NAS,笔记本电脑和台式机。 我需要能够将新文件添加到这3个设备中的任何一个,并使它们根据请求进行同步。

我一直在尝试使用Robocopy.exe,因为它暗示了一个超级简单的单行代码,但它不会复制子文件夹/目录。

我应该提一下,Powershell也很新。 该命令不必是单行的,因此,如果有一种方法可以对主目录中的所有文件夹进行robocopy.exe的多级递归,那么这也将起作用。

我现在所拥有的:

[string]$c = "c:\users\$env:username\music"
[string]$z = "z:\music"
robocopy.exe $c $z
robocopy.exe $z $c

我的shell:startup中有一个.cmd,它可以在启动后60秒内调用执行此脚本,它对于普通的音乐文件而言效果惊人。 问题是,我的很多歌曲都放在专辑文件夹(例如Led Zeppelin盒装)中,不会分散。

任何帮助将不胜感激,因为在最近几天的空闲时间中,我还没有找到一种很好的powershell复制/粘贴方法,但没有排除/覆盖方法。

特别说明:我的两台机器都运行Windows 10,因此我将可以使用最新的Powershell / ISE

您必须在两个位置列出文件并比较列表。 然后,您迭代差异列表。

$Folder1Contents = Get-ChildItem $Folder1Path
$Folder2Contents = Get-ChildItem $Folder2Path
$FolderDiffs = Compare-Object -ReferenceObject $Folder1Contents -DifferenceObject $Folder2Contents

$FolderDiffs | foreach {
    $copyParams = @{
        'Path' = $_.InputObject.FullName
    }
    if ($_.SideIndicator -eq '<=')
    {
        $copyParams.Destination = $Folder2Path
    }
    else
    {
        $copyParams.Destination = $Folder1Path
    }
    Copy-Item @copyParams
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM