powershell复制文件夹中的所有文件夹和文件

时间:2017-06-02 11:40:36

标签: powershell copy

对你们来说可能很容易。

我想复制此路径中的所有文件夹和文件c:\ default \ 到目的地c:\ environment \ customfolder \ 在文件夹customerfolder中是其他具有不同名称的文件夹。 它应该只将文件和文件夹复制到目标位置自定义文件夹包含名称DEMO_test

最好和最简单的方法是什么? 我应该使用for-each吗?

感谢您的帮助。

抱歉,我应该更清楚。 ; - )

我有一个文件夹c:\ default

该文件夹中的所有文件和子文件夹c:\ default

应该复制到这些文件夹

C:\环境\ customfolder \ demo_test

C:\环境\ customfolder \ demo_test01

C:\环境\ customfolder \ demo_test02

C:\环境\ customfolder \ demo_test03

我知道应该可以从此路径复制所有文件和子文件夹(来源)c:\ default \

到此路径(目标)c:\ environment \ customfolder \

如果他们有名称(如)demo_test *

,则只将其复制到文件夹中

这个问题更好吗?

感谢。

2 个答案:

答案 0 :(得分: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\"

答案 1 :(得分:0)

如果我理解你,你有完整的目录结构: 资源: c ^ \目录[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

您可以使用开关copy-TestdemoFolders -source 'C:\Source' -filter "*demo_test*" -destination D:\TEST -recursive:$true

以递归方式将文件从子文件夹复制到[lookupCatalog]