Переименуйте файл, если он существует powershell - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть скрипт, который будет создавать резервные копии файлов за 100 дней go и будет создавать резервные копии файлов за 5 дней для исходной резервной копии. Затем мне нужно будет запускать скрипт каждый день для резервного копирования любых новых файлов. Я пытаюсь увидеть, существует ли какой-либо файл и переименовать его с помощью временной метки. Я не уверен, что пойду правильно. Что я могу сделать, чтобы улучшить мой сценарий? Любая помощь будет оценена.

function BackupArtifacts {

Param(
$SourceFile,
$Destination,
$StartRange,
$NumberOfDaysCopied
)

$NewFileName = $FileName_ + $TimeStamp

New-Item -ItemType Directory -Force -Path $Destination
$count = 0

foreach ($fileList in Get-ChildItem $SourceFile -recurse) 
{    
    if ($fileList.LastWriteTime -ge (Get-Date).AddDays($StartRange) -and $fileList.LastWriteTime -le (Get-Date).AddDays($StartRange + $NumberOfDaysCopied)) #Go back 100 days and copy 5 days worth of files
    { 
        #Check if file already exists and if it does then rename it 
        If (Test-Path ($Destination, $NewFileName) -join "")
        {
            While (Test-Path @($Destination, $NewFileName) -join "") 
            {
                $NewFileName = "$NewFileName_ + $TimeStamp"
            }
            Rename-Item -Path ( ($Destination) -join '') -NewName ($NewFileName)
        }             
        try {
             #Copy-Item $fileList.FullName -Destination $Destination -Recurse
             Copy-Item -Path $SourceFile -Destination (@($Destination,$NewFileName) -join "") -Force
             Write-Host $fileList.FullName
             $count ++                                
        } catch {
        Write-Error $_
        }
     }                            
}
Write-Host "Backup complete, Number of files backed up:" $count
}

$SourceFile = "C:\TempCopy"
$TimeStamp = Get-Date -f dd_MM_yyyy
$Destination = "C:\TempCopyBackUp_" + $TimeStamp
$StartRange = "-100"
$NumberOfDaysCopied = "5"

BackupArtifacts $SourceFile $Destination $StartRange $NumberOfDaysCopied
...