我有以下目录结构:
Foo +--Bar +--Baz +--Garply +--...
使用PowerShell,我想以递归的方式将Baz复制到Foo并将其名称更改为Qux,以获得以下结构:
Foo +--Bar | +--Baz | +--Garply | +--... +--Qux +--Garply +--...
如果我打电话
Copy-Item .\Foo\Bar\Baz .\Foo\Qux -Recurse
我明白了:
Foo +--Bar | +--Baz | +--Garply | +--... +--Qux +--Baz +--Garply +--...
这不是我所期望的。
我可以将目标定位到。\ Foo并稍后将文件夹Baz重命名为Qux,但这是一个额外的复杂功能,并且还存在名称冲突的额外风险。
有没有办法只用Copy-Item
个调用来做到这一点?还有其他简单的选择吗?
答案 0 :(得分:1)
Copy-Item .\Foo\Bar\Baz .\Foo\Qux -Recurse
已经存在, Baz
只会将Qux
置于Qux
之下。
尝试这样的事情:
$src = '.\Foo\Bar\Baz'
$dst = '.\Foo\Qux'
if (Test-Path -LiteralPath $dst -Type Container) {
$src += '\*'
}
Copy-Item $src $dst -Recurse
或使用单独的复制语句,具体取决于目标文件夹是否存在:
if (Test-Path -LiteralPath $dst -Type Container) {
Copy-Item '.\Foo\Bar\Baz\*' '.\Foo\Qux' -Recurse
} else {
Copy-Item '.\Foo\Bar\Baz' '.\Foo\Qux' -Recurse
}