2017-06-02 342 views
-1

可能很容易爲你們。powershell複製文件夾中的所有文件夾和文件

我想所有的文件夾和文件複製從這個路徑C:\ DEFAULT \ 此目標C:\環境\ customfolder \ 在文件夾customerfolder是具有不同名稱的其他文件夾。 它應該只將文件和文件夾複製到目標位置自定義文件夾包含名稱DEMO_test

要做到這一點的最佳和最簡單的方法是什麼?我應該使用for-each嗎?

感謝您的幫助。

對不起,我應該更清楚。 ;-)

我有一個文件夾C:\默認

的所有文件和子文件夾在該文件夾C:\默認

應該被複制到這些文件夾

C:\環境\ customfolder \ demo_test

C:\環境\ customfolder \ demo_test01

C:\環境\ customfolder \ demo_test02

C:\環境\ customfolder \ demo_test03

我知道它應該是可能的所有文件和子文件夾從這個路徑(源)複製C:\ DEFAULT \

這個路徑(目標)C:\環境\ customfolder \

而且,只有將它複製到文件夾,如果他們有名稱(如)demo_test *

是這個問題比較好?

謝謝。

+0

你的要求是有點不清楚......也許你可以提供一些示例的源和目標文件路徑? – gvee

回答

2

獲取文件的列表:

Get-ChildItem -Path "C:\default\" -Recurse 

-Recurse參數搜索子文件夾。

現在篩選列表僅顯示符合特定模式

Get-ChildItem -Path "C:\default\" -Recurse | 
    Where-Object Name -like "*test*" 

注意管道|有效地鏈接在一起使用這些指令文件。

現在項目的篩選列表複製到目標文件夾:

Get-ChildItem -Path "C:\default\" -Recurse | 
    Where-Object Name -like "*test*" | 
    Copy-Item -Destination "C:\destination\" 
+0

感謝gvee的快速回復。 的唯一的事情是,它應該只複製到包含例如名爲test的目標文件夾。 我已嘗試與其中對象名稱,但是這似乎並沒有工作堅持是正確的? – michieln

+0

等名稱過濾器應該是目標路徑 – michieln

+0

@michieln遺憾的 - 不跟隨。在原始問題中確實需要更多信息。源文件夾和目標文件夾/文件的例子將是最具說明性的。 – gvee

0

如果我理解你corectly你有目錄的扁平結構: 來源: Ç\目錄[lookupCatalogs] \文件 DEST: C:\目錄\ SomeCatlogs [lookupCatalogs] \文件

如果是,

這個功能應該是確定:

function copy-TestdemoFolders 
{ 
    param ($source, 
    $destination, 
    $filter, 
    $recursive = $false) 


$folders = Get-ChildItem $source -filter $filter -Directory 

$folders | % { 

    $copyPath = Join-Path $destination $_.name 

    if (!(Test-Path $copyPath)) 
    { 
     New-Item $copyPath -ItemType Directory | Out-Null 
     "Created New Folder: $($_.name)" 
    } 

    $scriptBlock = { Get-ChildItem $_.Fullname } 

    if ($recursive -eq $true) 
    { 
     $scriptBlock = { Get-ChildItem $_.Fullname -Recurse } 
    } 

    Invoke-Command -ScriptBlock $scriptBlock | %{ 

     Copy-Item $_.Fullname $copyPath -ErrorAction SilentlyContinue 

     if (!($?)) { $error[0].Exception.Message } 

    } 
    } 
} 


copy-TestdemoFolders -source 'C:\Source' -filter "*demo_test*" -destination D:\TEST 

您可以遞歸從子文件夾中的文件複製到[lookupCatalog]與開關copy-TestdemoFolders -source 'C:\Source' -filter "*demo_test*" -destination D:\TEST -recursive:$true

+0

對不起,我應該更清楚。 ;-) 我有一個文件夾C:\默認 – michieln

+0

對不起,我應該更清楚。 ;-) 我有一個文件夾C:\默認 的所有文件和子文件夾在該文件夾C:\默認 應該被複制到這些文件夾C:\環境\ customfolder \ demo_test C:\環境\ customfolder \ demo_test01 c:\ environment \ customfolder \ demo_test02 c:\ environment \ customfolder \ demo_test03 我知道應該可以將此路徑(源)c:\ default \ 中的所有文件和子文件夾複製到此目錄路徑(目標)C:\環境\ customfolder \ 而只有將其複製到文件夾,如果他們有名稱(如)demo_test * 是這個問題比較好? 謝謝。 – michieln

相關問題