2016-11-14 9 views
1

前の2つのディレクトリ名に基づいてファイルの名前を変更します。たとえば、以下のファイル:それだけでファイルの名前を変更しかし前の2つのディレクトリ名に基づいてファイルの名前を変更します。

Get-ChildItem "C:\temp\288\Issue level 1" -Filter *.doc -Recurse | Rename-Item -NewName { $_.Directory.Name+'_'+$_.Name} 

C:\temp\288\Issue level 1\288 Temper inad.doc 

は、私はそれは私が次のPowerShellコマンドを作成している

288-Issue level 1-288 Temper inad.doc 

に改名したいです問題のレベル1、私はそれも最初に288のフォルダを含めるします。

+0

あなたのフォルダからファイルだけを選択し、 '288 \号レベル1 'を、そのため、あなたのスクリプトが288''フォルダの下に、他のファイルの名前を変更すべき理由理由はありません。 – davidhigh

答えて

2

DirectoryParentプロパティを使用して、以前のディレクトリ名を取得してください。また、私はフォーマット文字列使用します。

Get-ChildItem "C:\temp\288\Issue level 1" -Filter *.doc -Recurse | 
    Rename-Item -NewName { '{0}-{1}-{2}' -f $_.Directory.Parent.BaseName, $_.Directory.BaseName, $_.Name } 
+0

申し訳ありませんが、親Xレベルをどのように深く取得できますか?出来ますか? – 4c74356b41

+0

渡されたディレクトリレベルに基づいて文字列を作成する関数を記述することができます。難しいことではありません。 –

+0

まあ、私はややネイティブのアプローチを意味しました。実際の文字列を解析し、その中に '' \ ''の数を数えて何かをすることを意味しますか? – 4c74356b41

関連する問題