2011-06-25 8 views
2

を働いた後、以下のようにバックアップ場所にコピーされていません。名前の変更やコピーは、私は特定のファイルの名前を変更しようとしています

gci $src ` 
    | ?{!$_.psiscontainer -and $_.extension.length -eq 0 -and $_ -match "tmp_\d{1}$"} ` 
    | %{ ren -path $_.fullname -new ($_.name + ".ext") } ` 
    | %{ cpi -path $_.fullname -dest $bkup -force} 

リネーム一部が正常に動作しています。しかし、名前が変更されたファイルはバックアップ先にコピーされません。私はここで間違っていますか?

答えて

2

項目が上にそれらを渡すために-PassThruスイッチを使用し、バックパイプラインにプッシュされることはありません名前を変更:

gci $src ` 
    | ?{!$_.psiscontainer -and $_.extension.length -eq 0 -and $_ -match "tmp_\d{1}$"} ` 
    | %{ ren -path $_.fullname -new ($_.name + ".ext") -PassThru } ` 
    | %{ cpi -path $_.fullname -dest $bkup -force} 
+0

これは私が達成したいと思ったものに最も近いので、私はこの答えが好きでした。ありがとうzdan。 – Animesh

4

Rename-Itemは何も返さないので、Copy-Itemにパイプすることはありません。

gci $src ` 
    | ?{!$_.psiscontainer -and $_.extension.length -eq 0 -and $_ -match "tmp_\d{1}$"} ` 
    | %{ $renamedPath = $_.FullName + ".ext"; ` 
     ren -path $_.FullName -new $renamedPath; ` 
     cpi -path $renamedPath -dest $bkup -force } 
2

move-itemを使用して1つの操作で両方のコマンドを実行できます。デフォルトでは

gci $src 
    | ?{!$_.psiscontainer -and $_.extension.length -eq 0 -and $_ -match "tmp_\d{1}$"} 
    | %{ 
     $newname = $_.Name + ".ext" 
     move-item -path $_.FullName -dest "$bkup\$newname" 
     } 
+3

名前の変更やコピーがあります移動と同じではありません。 –

1

ワンライナー:

gci $src | ?{!$_.psiscontainer -and !$_.extension -and $_ -match 'tmp_\d$'} | move-item -dest {"$bkup\$($_.Name + '.ext')"} 
+0

私はこれが好きでしたが、私がしたいことを達成するための 'move-item'を望んでいませんでした。ご回答有難うございます。 '-match 'tmp_ \ d $'は '-match' tmp_ \ d {1} $'に相当しますか? – Animesh

+1

move-itemは、同じタスク(コピーと名前の変更)で2つのコマンドを使用する代わりに、オブジェクトの名前を変更するために使用されます。ところで、あなたはコピーで移動を置き換えることができます、それは同様に動作するはずです。 'tmp_ \ d $'は 'tmp_ \ d {1} $'と同じですが、これは一桁だけに一致します。 –

関連する問題