文件批量重命名 - 匹配预定义的文本文件

Files bulk renaming - match a predefined text file

美好的一天,

我正在尝试根据在文本文件中找到的 match/lookup rename/organize 个文件。

我在这样的文件夹中有几百个西里尔文(俄语)命名的媒体文件:

*注意有些文件有空格

具有所需名称的文本文件如下所示:

之所以这样(用 | 作为分隔符)是因为我尝试使用 "Bulk Renaming Utility",它使用管道 |作为 "Rename Pairs" 函数的分隔符。所以本质上,管道 | 右边的文件名是最终产品。不幸的是,该功能不适用于西里尔字母(俄语)或其他非标准字符。

我找到了 PowerShell 脚本 HERE,它似乎几乎是我所需要的,只是它在重命名之前与文件名不匹配。 同样,我发现这个 Python 脚本 HERE 可以满足我的需要,但它是用于 Ubuntu 的。不幸的是,我在 Windows7 并且不确定它是否适用于我。

有什么建议吗?

非常感谢您的宝贵时间!

您可以将文本文件读入哈希表,其中键是旧名称(| 左侧的值),值是新名称:

$RenameTable = @{}
Get-Content textfile.txt |ForEach-Object {
    $OldName,$NewName = $_.Split('|')
    $RenameTable[$OldName] = $NewName
}

然后根据哈希表中的内容重命名文件:

Get-ChildItem .\folder\with\avi\files |Rename-Item -NewName {
    if($RenameTable.ContainsKey($_.Name)){ 
        $RenameTable[$_.Name] 
    } else { 
        $_.Name 
    }
}