2016-08-06 9 views
3

私は現在、私が個人的にリッピング/ダウンロードしたムービーの初期命名を処理するためにFilebotを使用しています。それはブルーレイのソースを有するフィルムを識別すると、それはフィルムをラベル:Powershellの大文字と小文字を区別する名前の変更

Movie Title (Year) (BluRay) 

私が望むどのような大文字と小文字を区別PowerShellスクリプトは、「ブルーレイ」に「ブルーレイ」の名前を変更するためのものです。次のように私の現在のスクリプトは次のとおりです。

Dir | Rename-Item –NewName { $_.name –replace "BluRay","Blu" } >$null 2>&1 
Dir | Rename-Item –NewName { $_.name –replace "Blu","Bluray" } >$null 2>&1 

(私は日付が変更オフベースのバックアップ/同期ソフトウェア使用しているため)、私はそれがにISN方法として見て、それが通過して、すべてのフォルダの名前を変更したくないを除いてこれは、素晴らしい作品「tは大文字と小文字が区別などのような偽の低迷、特定の映画:

Deep Blue Sea (1999) (Bluray) 

は、だから私はそれ大文字と小文字を区別(好ましい方法)を作成またはワードブルーを除外することができれば、それは効率的でなければなりません。

答えて

3

大文字と小文字を区別できる場合は、適切な演算子を使用するだけです。

Dir | Where-Object Name -cmatch 'BluRay' | Rename-Item –NewName { $_.name –creplace "BluRay","Blu" } >$null 2>&1 

または:比較演算子のほとんどは、あなたが必要とするだけのものにすることが目標にし、変更することができ、オブジェクトの追加など-ceq、-clike、-creplace、など、など、大文字と小文字を区別バリアントを、持っていますあなたには、いくつかの理由のためだけでなくbは小文字をキャプチャする必要がある場合:

Dir | Where-Object Name -cmatch '[bB]luRay' | ForEach-Object { 
    $Item = Rename-Item $_.FullName -NewName ($_.Name –replace "BluRay","Blu") -PassThru 
    $null = Rename-Item $Item.FullName -NewName ($Item.Name -replace 'Blu', 'Bluray') 
} 

クリス

+0

であると私は受け取ったすべてのエラーがあったように私はあなたのコードをコピーして貼り付けます。コードブロックの行に沿った何か。オリジナルのスクリプトがすべてのムービーフォルダの名前を変更していたにもかかわらず、変更された日付/時刻には影響しませんでした。私は誤ったポジティブ(Bluray to Blue)をキャッチするためにスクリプトに追加の行を追加しました。しかし、助けてくれてありがとう! – Failstyle

+0

上記の例を編集しましたが、NewNameのスクリプトブロックは、単一のパイプラインで実行されている場合にのみ有効です。名前の変更の最初のステップを取得するために、名前の変更にPassThruを追加しました。申し訳ありません。 –

関連する問題