2017-06-02 343 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

相关问题