使用PowerShell或其他批量重命名文件

我有两个不同的手机拍摄的图像文件夹。 这两款手机使用略有不同的文件名格式。 我想改变其中的一个来匹配另一个,所以我有一个整洁的相册。

如何将20110809_121158.jpg的文件名20110809_121158.jpg2011-08-09 12.11.58.jpg

如果解决scheme来自Powershell,那将是非常好的,但也欢迎任何其他选项!

这里有一个方法来做到这一点,使用SubString:

 function getNewFileName($fname) { $year = $fname.SubString(0,4) $month = $fname.SubString(4,2) $day = $fname.SubString(6,2) $hours = $fname.SubString(9,2) $minutes = $fname.SubString(11,2) $seconds = $fname.SubString(13,2) $new_fname = [string]::Format( "{0}-{1}-{2} {3}.{4}.{5}.jpg", $year,$month,$day,$hours,$minutes,$seconds) return $new_fname; } 

要使用它来重命名文件夹中文件条目的select,可以使用如下所示:

 $fileEntries = Get-ChildItem *_* -name foreach($fileName in $fileEntries) { $newFileName = getNewFileName($fileName) Write-Host -NoNewLine Rename-Item $filename $newFileName Write-Host } 

正如所写,这个脚本实际上不会改变任何东西 – 它可以让你预览什么会改变,通过输出提出的重命名命令到控制台。 要真正重命名文件,您必须删除“Write-Host”语句。 此脚本假定您在该文件夹中的所有文件都是您提到的两种types的文件名。

  $fileEntries = Get-ChildItem *_* -name 

只select包含下划线的文件,因此我们不会尝试重命名其他types的文件。 此脚本旨在运行在主题文件夹中; 在其他地方运行它可能会做错误的文件奇怪的事情。