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