2017-01-31 89 views
1

我試圖使用Powershell將一大堆文件從一個目錄複製到另一個目錄中。使用通配符複製文件夾

我用Get-ChildItem C:\Users\Tom\Google Drive\My Files\*\Assessment 1\*來確定這是我想複製的路徑,我知道Copy-Item,但我想在複製時保留部分路徑名。

例子:

如果我從C:\Users\Tom\Google Drive\My Files\Cool Stuff\Assessment 1\* 複製我要的文件去一個是創建一個名爲C:\Users\Tom\Archive\Cool Stuff\Assessment 1

而如果我從C:\Users\Tom\Google Drive\My Files\New Stuff\Assessment 1\*

複製我要的文件去文件夾創建的文件夾名爲C:\Users\Tom\Archive\New Stuff\Assessment 1

回答

2

您可以使用Get-ChildItem cmdlet遞歸Ÿ找到你的基地目錄中的所有文件夾Assessment 1,然後使用-replace使用Copy-Item cmdlet的最後複製的項目中刪除基本路徑:

$baseDir = 'C:\Users\Tom\Google Drive\My Files\' 
$destination = 'C:\Users\Tom\Archive\' 

Get-ChildItem $baseDir -directory -Filter 'Assessment 1' -Recurse | ForEach-Object { 
    $newPath = Join-Path $destination ($_.FullName -replace [regex]::Escape($baseDir)) 
    Copy-Item $_.FullName $newPath -Force -Recurse 

} 
+0

非常感謝您! –