Используя папки, которые выглядели так ( Папка 4 намеренно пуста ):
PS C:\> Get-ChildItem -Path C:\temp\YourDirectory\ -Recurse
Directory: C:\temp\YourDirectory
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 04/03/2020 16:03 Folder1
d----- 04/03/2020 16:04 Folder2
d----- 04/03/2020 16:04 Folder3
d----- 04/03/2020 16:02 Folder4
-a---- 04/03/2020 16:03 0 MyImage.png
-a---- 04/03/2020 16:03 0 YourImage.png
Directory: C:\temp\YourDirectory\Folder1
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 04/03/2020 16:03 0 MyImage.png
-a---- 04/03/2020 16:03 0 MyPhoto.jpg
Directory: C:\temp\YourDirectory\Folder2
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 04/03/2020 16:04 0 YourImage.png
Directory: C:\temp\YourDirectory\Folder3
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 04/03/2020 16:04 0 catmeme.gif
-a---- 04/03/2020 16:04 0 MyImage.png
И, желая скопировать файлы в папку C:\Temp\DestinationDirectory
, я получил следующее:
$Source = "C:\temp\YourDirectory"
$Destination = "C:\temp\DestinationDirectory"
$Files = Get-ChildItem -Path $Source -Recurse -File
ForEach($File In $Files)
{
$Path = $File.Fullname
$Name = $File.BaseName
$Ext = $File.Extension
$NewPath = "$Destination\$Name$Ext"
$i = 1
While (Test-Path -Path $NewPath)
{
$NewPath = $Destination + "\" + $Name+ "_" + $i.ToString() + $Ext
$i++
}
Copy-Item -Path $Path -Destination $NewPath
Write-host "Copied file $Path to $NewPath."
}
Это цикл для каждого файла, рекурсивно. Затем он перебирает каждый файл и проверяет, существует ли файл в месте назначения. Если это так, он устанавливает добавление суффикса к имени (_1
для первого дубликата). Он продолжает проверять и увеличивать до тех пор, пока не найдет файл, а затем скопирует указанный файл.
В результате появился каталог, как показано ниже:
PS C:\> Get-ChildItem -Path C:\temp\DestinationDirectory\
Directory: C:\temp\DestinationDirectory
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 04/03/2020 16:04 0 catmeme.gif
-a---- 04/03/2020 16:03 0 MyImage.png
-a---- 04/03/2020 16:03 0 MyImage_1.png
-a---- 04/03/2020 16:04 0 MyImage_2.png
-a---- 04/03/2020 16:03 0 MyPhoto.jpg
-a---- 04/03/2020 16:03 0 YourImage.png
-a---- 04/03/2020 16:04 0 YourImage_1.png