2017-02-03 5 views
0

powershellを使用して、ファイル名の前にファイル名が日付で始まっていない場合にのみ追加します。他のファイルの場合、コードはそれらをスキップする必要があります。ファイルが日付で始まっていない場合は、powershellのファイル名に前に日付を付けます。

私は正常に日付を前に次のコマンドを使用しましたが、任意の日付形式(またはおそらく任意の数字)で始まっていないファイル名に対して条件付きにしたいと思います。

Dir | Rename-Item -NewName {(Get-Date $_.CreationTime -Format "yyyy-MM-dd ")+ $_.BaseName+$_.Extension} 

答えて

2

あなたは、パターンに一致する正規表現を使用することができます。私は正規表現では最善ではないが、あなたが指定したフォーマットで日付を照合するために、次の正規表現が見つかった。私はちょうどあなたの既存のコードを取って、Where-Objectを挿入して、既にパターンと一致するファイルを除外しました。

$regex = [regex] '^\d{4}-\d{2}-\d{2}' 
    Get-ChildItem | Where-Object {!($_.Name -match $regex)} | Rename-Item -NewName {(Get-Date $_.CreationTime -Format "yyyy-MM-dd ")+ $_.BaseName+$_.Extension} 
+0

Where-Objectコマンドは、本当に便利なスタートです。ファイル名*の先頭に数字を付けて一致させる方法はありますか? –

+1

私が言ったように、私は正規表現で最高ではありません。正規表現 "^"を組み込むように正規表現を編集しました。基本的にパターンがファイル名の先頭にある場合にのみ一致します。新しい正規表現は ''^\ d {4} - \ d {2} - \ d {2} '' – AKJoe

+0

です。 'Get-ChildItem -File -Recurse | ($ _。CreationTime -Format "yyyy-MM-dd")+ $ _。ベース名+ $ _名前の変更 - .Extension} ' –

関連する問題