2012-06-14 48 views
0

我需要使用子文件夾複製文件夾,但是沒有任何文件,除了包含文件夾「Project」的數據之外。使文件夾樹沒有文件的副本

因此,我需要做新的文件夾樹,但它應該只包含文件名爲「Project」的子文件夾中。

OK,我的解決辦法:

$folder = dir D:\ -r 
$folder 

foreach ($f in $folder) 
{ 
    switch ($f.name) 
    { 
    "project" 
    { 
     Copy-Item -i *.* $f.FullName D:\test2 
    } 

    default 
    { 
    Copy-Item -exclude *.* $f.FullName D:\test2 
    } 

    } 
} 
+0

你試過了什麼都不做而失敗? – alfasin

+0

我不知道如何保留「Project」文件夾中的文件。 –

+0

老兄,在發帖之前,最好先閱讀常見問題解答部分:http://stackoverflow.com/faq - 您應該展示您爲解決問題所付出的努力,向我們展示您嘗試編寫的代碼並且不起作用,告訴我們你不要求我們做你的硬件任務... – alfasin

回答

0

另一種解決方案:

$source = "c:\dev" 
$destination = "c:\temp\copydev" 

Get-ChildItem -Path $source -Recurse -Force | 
    Where-Object { $_.psIsContainer } | 
    ForEach-Object { $_.FullName -replace [regex]::Escape($source), $destination } | 
    ForEach-Object { $null = New-Item -ItemType Container -Path $_ -Force } 

Get-ChildItem -Path $source -Recurse -Force | 
    Where-Object { -not $_.psIsContainer -and (Split-Path $_.PSParentPath -Leaf) -eq "Project"} | 
    Copy-Item -Force -Destination { $_.FullName -replace [regex]::Escape($source), $destination } 
0

使用Get-ChildItem改乘了文件夾,並使用New-Item重新映射結構。在遞歸中,您可以輕鬆檢查「項目」。

4

使用xcopy /t僅複製文件夾結構,然後單獨複製Project文件夾。事情是這樣的:

'test2\' | Out-File D:\exclude -Encoding ASCII 
xcopy /t /exclude:d:\exclude D:\ D:\test2 
gci -r -filter Project | ?{$_.PSIsContainer} | %{ copy -r $_.FullName d:\test2} 
ri d:\exclude 
+0

我不行。有太多的子文件夾,他們每個人都有「項目」文件夾。 –

+0

如果有太多自動化方法失敗,那麼您還有其他問題。 – Joey

+0

對不起,我認爲你的意思是「然後複製項目文件夾」手動複製。 –

0

首先,創建目錄結構:

xcopy D:\source D:\destination /t /e 

現在,通過源目錄遍歷,在項目目錄中的所有文件複製:

Get-ChildItem D:\Source * -Recurse | 
    # filter out directories 
    Where-Object { -not $_.PsIsContainer } | 

    # grab files that are in Project directories 
    Where-Object { (Split-Path -Leaf (Split-Path -Parent $_.FullName)) -eq 'Project' } | 

    # copy the files from source to destination 
    Copy-Item -Destination ($_.FullName.Replace('D:\source', 'D:\destination')) 
相關問題