2016-04-01 23 views
0

おはよう、ファイルの一括リネーム - 定義済みのテキストファイルとの一致

テキストファイルの一致/検索に基づいてファイルの名前を変更しようとしています。

私はこのようなフォルダ内のメディアファイルをキリル文字(ロシア)百のカップルを命名した

  • файл35.avi
  • файл34.avi
  • файл24.avi
  • файл14 .AVI

*いくつかのファイルがスペースを持っていることに注意してください

テキストファイルは、次のようになります。

  • файл35.avi | 4.файл35.avi
  • файл34.avi| 3,файл34.avi
  • файл24.avi | 1.файл24.avi
  • файл14.avi| 2.файл14.avi

それはそのように見える理由| |私はパイプを使用しています「一括名前変更ユーティリティ」を使用してみましたので(とセパレータとして)があります「名前の変更」機能のセパレータとして使用します。したがって、本質的に、パイプの右側のファイル名|最終製品です。残念ながら、その関数はキリル文字(ロシア語)または他の非標準文字では機能しません。

PowerShellスクリプトHEREは、名前を変更する前にファイル名と一致しない点を除いて、ほとんど必要なものと思われます。 同様に、私はこのPythonスクリプトHEREを見つけました。これは私が必要とするものですが、Ubuntu用です。残念ながら、私はWindows7上にあり、それが私に当てはまるかどうかはわかりません。

推奨事項

ありがとうございます!

+0

*バルーンリネームユーティリティ*をもう一度使用することはできませんが、今回は正しい方法ですか? – Farside

+0

BRUを使用する別の方法があるかどうかはわかりません。あなたは正しい方法を提案できますか? – Norskyi

答えて

0

あなたは鍵が古い名前(|の左側の値)であるハッシュテーブルの中にテキストファイルを読み取ることができ、その値が新しい名前です。次に

$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 
    } 
} 
+0

それはすごくうまくいった!私はあなたが大好きです:)ありがとう! – Norskyi

+0

'Get-ChildItem $ ScriptDir -Filter * .avi | ...'を使って、aviファイルの名前を変更しようとするだけかもしれませんが、そうでなければ細かいはずです。 –

+0

素晴らしいです! – Norskyi

関連する問題