So I had a problem on Windows in that I have lots of directories that are named correctly but I wish the files under them to be uniformly named.
The solution was to use PowerShell, which is an extremely effective scripting tool for Windows, especially if you come from a UNIX shell background.
There is actually quite a lot of documentation available for it and rather than go into detail I will simply show you the script:
#
# RenameDirectoryFiles.ps1
#
param( [string[]]$paths )
Set-PSDebug -Strict
foreach ( $path in $paths ) {
if ( !(Test-Path $path -PathType Container) ) {
Write-Error "'$path' doesn't exist or isn't a directory"
exit 1
}
$i = 0
Get-ChildItem $path | sort FullName | foreach {
$tmp = "{0:000}" -f $i
$ext = $_.Extension
$newname = "$path - $tmp$ext"
Rename-Item $_.fullname $newname
$newname
$i = $i + 1
}
}
So the usage is extremely simple:
RenameDirectoryFiles.ps1 'My Directory'
After which all the files under ‘My Directory’ will be renamed to ‘My Directory – 000.fileextension’.