2012-09-06 14 views
5

私はRename-ItemにパイプGet-ChildItemを使用してファイルのリストを選択し、「名前を変更oldfilename newfilename へ」のようなものを示す各ラインと出力表示テキストを持っているしたいと思います。PowerShellでは、Rename-Itemを使用して古いファイル名と新しいファイル名を同時に出力するにはどうすればよいですか?

どうすればいいですか?

+1

私はPowerShellの盲のビットので、私は低迷しています少し。私はTee-Objectと - outvariableと-passthruで遊んだが、正直言って私がやっていることは本当にわからないし、これはやりやすいことだと感じている。 –

答えて

7
Get-Childitem C:\Temp | 
    Foreach-object { 
     $OldName = $_.name; 
     $NewName = $_.name -replace 'temp','test'; 
     Rename-Item -Newname $NewName; 
     Write-Output $("Renamed {0} to {1}" -f $OldName,$NewName) 
     } 
+1

これは非常に読みやすいと私に訴えます。 –

6

rename-itemを実行する簡単な解決策は、-WhatIfです。これは、

PS H:\test> gci | rename-item -newname { $_.name -replace 'temp','test' } -WhatIf 
What if: Performing operation "Rename File" on Target "Item: H:\test\temp1 Destination: H:\test\test1". 

のように表示されますか、操作をしている間にそれを行う必要がありますか?

EDIT:さらに簡単な解決策は、-Verboseです。 -WhatIfと同じに行いますが、また、操作を行っ:)

+0

ありがとうございます - 可能であれば、出力に良い書式設定をしたいと思います。冗長でwhat-ifの仕事ですが、出力はあまり読みにくくありません。私はこの1つを高く評価します。 –

4

あなたはこのようにそれを行うことができます。

gci . | %{ rename-item -Path $_.fullname -NewName ($_.name + 1); Write-Host "Renamed $($_.fullname) to $($_.name + 1)"} 
関連する問題