PowerShell - Alle Files in ihren Zeitstempel umbenennen

function global:Rename-AllToDate
    {
    param(
        [parameter(Mandatory=$false)][switch]$recurse,
        [parameter(Mandatory=$false)][switch]$folders
        )

    if ($recurse.IsPresent -eq $false -and $folders.IsPresent -eq $false)
        {
        Write-Host "Files, no recurse."
        $filelist = (Get-ChildItem -File)
        }
    elseif ($recurse.IsPresent -ne $false -and $folders.IsPresent -eq $false)
        {
        Write-Host "Files, recurse."
        $filelist = (Get-ChildItem -File -Recurse)
        }
    elseif ($recurse.IsPresent -eq $false -and $folders.IsPresent -ne $false)
        {
        Write-Host "Folders, no recurse."
        $filelist = (Get-ChildItem -Directory)
        }
    elseif ($recurse.IsPresent -ne $false -and $folders.IsPresent -ne $false)
        {
        Write-Host "ERROR: Renaming Folders in Folders not possible."
        return
        }
 
    $filecount = $filelist.Count
    $filenumber=0

    foreach ($file in $filelist)
        {
        $fyear = "{0:d4}" -f $file.LastWriteTime.Year
        $fmonth = "{0:d2}" -f $file.LastWriteTime.Month
        $fday = "{0:d2}" -f $file.LastWriteTime.Day
        $fhour = "{0:d2}" -f $file.LastWriteTime.Hour
        $fmin = "{0:d2}" -f $file.LastWriteTime.Minute
        $fsec = "{0:d2}" -f $file.LastWriteTime.Second
        
        if ($folders.IsPresent -ne $false)
            {
            $this_path = ($file.Parent | select fullname).fullname
            }
        else
            {
            $this_path = $file.Directoryname
            }
        
        $oldname = $file.Name
        $newname = $fyear + "-" + $fmonth + "-" + $fday + "__" + $fhour + "_" + $fmin + "_" + $fsec + $file.Extension

        $newfullname = $this_path + "\" + $newname

        $status = "[" + $filenumber + " / " + $filecount + "] - " + $newname + " <- " + $oldname
        $percentcomplete = ( ($filenumber / $filecount ) * 100 )
    
        $filenumber++
        
        # "This Path: " + $this_path
        # "Oldname: " + $oldname
        # "Newname:" + $newname
        # "Fullname: " + $file.Fullname
        # "NewFullname: " + $newfullname

        if ($oldname -eq $newname)
            {
            $status = "[" + $filenumber + " / " + $filecount + "] - SKIPPED (already done) - " + $newname + " <- " + $oldname
            Write-Progress -Activity "Renaming..." -Status $status -PercentComplete $percentcomplete
            # Write-Host "Skipped $oldname"
            }
        else
            {
            if (Test-Path -Path $newfullname)
                {
                # $status = "[" + $filenumber + " / " + $filecount + "] - Finding suffix - " + $newname + " <- " + $oldname
                # "--- Finding Suffix."
                # Write-Progress -Activity "Renaming..." -Status $status -PercentComplete $percentcomplete
                for (($suffix = 1), ($found = $false); $found -eq $false; $suffix++ )
                    {
                    $testname = $fyear + "-" + $fmonth + "-" + $fday + "__" + $fhour + "_" + $fmin + "_" + $fsec + "_" + $suffix + $file.Extension
                    $testfullname = $this_path + "\" + $testname
                    
                    if (Test-Path -Path $testfullname)
                        {
                        # file exists. skip name.
                        }
                    else
                        {
                        $found = $true
                        $newfullname = $testfullname
                        # $status = "[" + $filenumber + " / " + $filecount + "] - Found Suffix - " + $testname + " <- " + $oldname
                        # "--- Found Name: " + $newfullname
                        # Write-Progress -Activity "Renaming..." -Status $status -PercentComplete $percentcomplete
                        }
                    }
                }
            Write-Progress -Activity "Renaming..." -Status $status -PercentComplete $percentcomplete
            Rename-Item -Path $file.Fullname -NewName $newfullname
            }

        }
    
    
    }