合并两个目录,保留任何具有相同名称的文件

时间:2016-12-08 17:40:15

标签: powershell

我正在寻找一些帮助,以创建一个PowerShell脚本,将一个目录合并或复制到另一个目录,目标目录包含与源名称相同的文件。

我需要保留两者,如果目标中有一个重复名称的文件,脚本可以在源文件中附加一个数字。

Here是一个处理一个文件的示例脚本,但我需要设置一个目录,让它在整个目录上递归递送。

$SourceFile = "C:\Temp\File.txt"
$DestinationFile = "C:\Temp\NonexistentDirectory\File.txt"

if ((Test-Path $DestinationFile) -eq $false) {
    New-Item -ItemType File -Path $DestinationFile -Force
}

Copy-Item -Path $SourceFile -Destination $DestinationFile

1 个答案:

答案 0 :(得分:1)

试试这个

$SourceDir = "C:\Temp"
$DestinationDir = "C:\Temp2\NonexistentDirectory"

#create dir if not exists (dont remove if exist)
New-Item -ItemType Directory -Path $DestinationDir -Force

#get list files destination dir 
$DestinationFiles=gci $DestinationDir -File

#loop on file source and create newname for copy while name exist already
gci $SourceDir -File | %{

$counter=0
$name=$_.Name
while ($name -in $DestinationFiles.Name)
{
  $counter++;
  $name="{0}_{1:d6}{2}" -f  $_.BaseName, $counter, $_.Extension

}


Copy-Item -Path $_.FullName -Destination "$DestinationDir\$name" 

}