移动文件,检查重复项,并在存在的情况下递增重命名

时间:2019-03-25 20:41:06

标签: powershell

我有一个脚本,该脚本先查看源文件夹,然后查看目标文件夹,并确定是否存在子文件夹。如果没有,它将创建相应的文件夹。完成后,它将子文件夹中的所有文件移动到目标位置。问题-有重复的文件,不能覆盖。我需要一种检查重复项的方法,如果找到了,将源文件名增加-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

0 个答案:

没有答案