У меня есть скрипт, который просматривает исходную папку, а затем целевую папку и решает, присутствуют ли подпапки. Если нет, то создается соответствующая папка. После этого все файлы в подпапках перемещаются в место назначения. Проблема - есть дубликаты файлов, которые не могут быть перезаписаны. Мне нужен способ проверить наличие дубликатов и, если найдено, увеличить имя исходного файла на -1. Возможно, файлы уже увеличены.
Мой текущий скрипт работает безупречно для создания необходимых подпапок и перемещения файлов, но я теряю все предыдущие файлы.
$SFolder = "C:\Temp\Test\Source\"
$DFolder = "C:\Temp\Test\Destination\"
$folders = Get-ChildItem -Path $SFolder -Directory
foreach ($folder in $folders) {
Get-ChildItem -File "$sfolder\$folder" |
Where-Object -FilterScript {$_.LastWriteTime -lt [datetime]::Now.AddMinutes(-5)} |
Sort-Object -Property LastWriteTime |
Group-Object -Property {$_.LastWriteTime.ToString("yyyy")} |
ForEach-Object {
if (!(Test-Path -Path "$dfolder\$folder" -PathType Container -ErrorAction SilentlyContinue)) {
New-Item -ItemType Directory -Force -Path "$dfolder\$folder"
}
$_.group|move-item -Destination "$dfolder\$folder" -PassThru
}
}
Сценарий, как написано, прекрасно работает. Вот что мне нужно. Я начинаю со следующего:
Source test1\05013018-22503-652469-1 (no file extension)
test1\05013018-22503-652469-2
Destination test2\05013018-22503-652469-1
test2\05013018-22503-652469-1-1
test2\05013018-22503-652469-1-2
Я хочу получить следующий результат после запуска скрипта:
Source test1\
Destination test2\05013018-22503-652469-1
test2\05013018-22503-652469-1-1
test2\05013018-22503-652469-1-2
test2\05013018-22503-652469-1-3
test1\05013018-22503-652469-2