
[英]need PowerShell script to copy files to subdirectory where basename points to directory
[英]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.