簡體   English   中英

在PowerShell中,如何遞歸復制目錄並同時更改其名稱

[英]In PowerShell, how to copy a directory recursively and change its name at the same time

我具有以下目錄結構:

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調用來做到這一點? 還有其他簡單的選擇嗎?

Copy-Item .\\Foo\\Bar\\Baz .\\Foo\\Qux -Recurse Qux如果目錄Qux已經存在,則Copy-Item .\\Foo\\Bar\\Baz .\\Foo\\Qux -Recurse僅將Baz置於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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM