文件批量重命名 - 匹配预定义的文本文件
Files bulk renaming - match a predefined text file
美好的一天,
我正在尝试根据在文本文件中找到的 match/lookup rename/organize 个文件。
我在这样的文件夹中有几百个西里尔文(俄语)命名的媒体文件:
- файл 35.avi
- файл34.avi
- файл2 4.avi
- файл14.avi
*注意有些文件有空格
具有所需名称的文本文件如下所示:
- файл 35.avi| 4. файл 35.avi
- файл34.avi| 3. файл34.avi
- файл2 4.avi| 1. файл2 4.avi
- файл14.avi| 2. файл14.avi
之所以这样(用 | 作为分隔符)是因为我尝试使用 "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
}
}
美好的一天,
我正在尝试根据在文本文件中找到的 match/lookup rename/organize 个文件。
我在这样的文件夹中有几百个西里尔文(俄语)命名的媒体文件:
- файл 35.avi
- файл34.avi
- файл2 4.avi
- файл14.avi
*注意有些文件有空格
具有所需名称的文本文件如下所示:
- файл 35.avi| 4. файл 35.avi
- файл34.avi| 3. файл34.avi
- файл2 4.avi| 1. файл2 4.avi
- файл14.avi| 2. файл14.avi
之所以这样(用 | 作为分隔符)是因为我尝试使用 "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
}
}