2012-07-19 65 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

相关问题