Перемещение файлов, проверка на наличие дубликатов и постепенное переименование, если оно есть - PullRequest
0 голосов
/ 25 марта 2019

У меня есть скрипт, который просматривает исходную папку, а затем целевую папку и решает, присутствуют ли подпапки. Если нет, то создается соответствующая папка. После этого все файлы в подпапках перемещаются в место назначения. Проблема - есть дубликаты файлов, которые не могут быть перезаписаны. Мне нужен способ проверить наличие дубликатов и, если найдено, увеличить имя исходного файла на -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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...