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
}
}
}