2012-07-19 90 views
8

嗨,我有以下掙扎的境地 - 假設我有以下目錄結構C:\ TEMP \ Test1的和C:\ TEMP \ Test2的複製項目/刪除項目只有沒有根文件夾的子內容?

我希望做的是遞歸複製兒童的內容\ TEMP \ Test1的到C:\ TEMP \ Test2的不復制的實際文件夾C:的C \ TEMP \ Test1的..right現在如果我使用命令

Copy-Item C:\Temp\Test1 C:\Temp\Test2 -Recurse 

將導致C:\ TEMP \ Test2的\ Test1和沒有參數的組合似乎緩解了這個問題

同樣,當我希望刪除C:\ Temp \ Test2中的所有子內容時,我只希望刪除子內容而不是實際文件夾例如

Remove-Item C:\Temp\Test2\ -Recurse 

正在刪除\ Test2文件夾。我已經嘗試了很多參數的變化 - 我怎麼才能完成我想要做的事情?

回答

5

看看get-childitem命令。你可以使用這個在管道的根文件夾下複製或刪除所有項目:

# recursively copy everything under C:\Temp\Test1 to C:\Temp\Test2 
get-childitem "C:\Temp\Test1" | % { 
    copy-item $_.FullName -destination "C:\Temp\Test2\$_" -recurse 
} 

# recursively remove everything under C:\Temp\Test1 
get-childitem "C:\Temp\Test1" -recurse | % { 
    remove-item $_.FullName -recurse 
} 
+0

由於該訣竅。 – blue18hutthutt 2012-07-19 21:57:27

+1

請注意,您不必在foreach中包裝cmdlet調用('... |%{cmdlet $ _。FullName ...}'); ['Copy-Item'](http://go.microsoft.com/fwlink/?LinkID=113292)和['Remove-Item'](http://go.microsoft.com/fwlink/?LinkID= 113373)將自動接受來自管道的輸入。例如。第二個例子可以簡化爲'Get-ChildItem「$ env:temp \ Test1」| Remove-Item -Recurse'。 – 2012-08-23 23:34:25

8
Copy-Item C:\Temp\Test1\* C:\Temp\Test2 
    Remove-Item "C:\Temp\Test2\*" -recurse 

工作太:)

+0

複製項目在Test1中保留(即使有遞歸或容器)文件夾結構.... – 2016-04-28 12:54:05

相關問題