我正在尝试重命名某些文件,然后将它们复制到备份位置,如下所示:
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}
重命名部分工作正常。但重命名的文件不会被复制到备份位置。我在这里做错了什么?
答案 0 :(得分: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 }
答案 1 :(得分:2)
您可以使用move-item在一个操作中完成这两项操作。
gci $src
| ?{!$_.psiscontainer -and $_.extension.length -eq 0 -and $_ -match "tmp_\d{1}$"}
| %{
$newname = $_.Name + ".ext"
move-item -path $_.FullName -dest "$bkup\$newname"
}
答案 2 :(得分: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}
答案 3 :(得分:1)
一个班轮:
gci $src | ?{!$_.psiscontainer -and !$_.extension -and $_ -match 'tmp_\d$'} | move-item -dest {"$bkup\$($_.Name + '.ext')"}