我希望能够编写一个PowerShell脚本来获取一个文件夹(或一组文件夹)并复制文件夹结构(没有文件)可以被创建,其中可以创建文件结构(不包括文件夹),或者可以创建文件夹(全部或选定的文件夹)和文件夹(和)。复制没有文件的文件夹,没有文件夹的文件或使用PowerShell的所有文件
Example:
C:\ProdData has 3 subfolders in it
C:\ProdData\Fld1
C:\ProdData\Fld2
C:\ProdData\Fld3 - has 2 subfolders under it
C:\ProdData\Fld3\MyFolder1
C:\ProdData\Fld3\MyFolder2
上面的每个文件夹都有各种文件扩展名的各种大小的文件。
我想有一个PowerShell脚本,将在其他地方复制该文件夹结构,给我文件夹结构只有,文件只有,或文件和文件夹要复制的选择。
在上文中,我想能够复制C:\ ProdData到另一个文件夹,基本上重命名ProdData到TESTDATA(即,C:\ ProdData复制到C:\ TESTDATA),或者复制整个文件夹结构。
C:\ProdData
到另一个文件夹那就是别的一个子文件夹:C:\TestArea\TestFolders\2012-04-01\TestData\ProdData\Fld1
,等...
并选择性地选择包括文件夹,文件或两者。
理想的解决方案是(仅适用于文件夹)采取文件夹结构,导出/保存,读入,并在其他地方创建相同的结构。我发现一些解决方案说他们只复制文件夹结构,但是如果数据存在,它也会被复制,并且您不能排除其中一个。我有一个部分解决了仅文件的要求,即半保留路径,但它会采取一个文件:
c:\ProdData\Fld1\MyFile.dat
并将其复制到:
c:\TestData\yyyyMMdd_hhmmss_ProdData_Fld1_MyFile.dat
但是,这不是一件能容易被解码并且不可能重新整合源结构。我很感激有关如何在不重新发明车轮的情况下实现这一目标的任何想法。
感谢您的建议。我甚至没有安装Robocopy,它非常适合需求。 我最终为一个文件的结构做了什么,就是将Show-Tree管到文本文件中。那完成了我之后的另一件事。没有一件事会做到这一切,但3个相对简单的作品合在一起就完成了我所需要的。 谢谢你的帮助! – 2012-04-04 13:13:16
对于扁平化,您可以跳过中间部分,并使用Get-ChildItem上的-File选项(和Copy-Item而不是robocopy):Get-ChildItem $ source -Recurse -File | Foreach-Object {Copy-Item $ _。FullName $ dest}。虽然没有太大的区别。 – Brandon 2013-06-12 20:55:13
@Brandon好点。只要你使用Powershell 3,你当然可以这么做(直到v3之前'-File'和'-Directory'参数才存在)。 – ajk 2013-06-13 03:05:07