从具有特定文件类型的给定树中仅复制特定的文件夹结构

时间:2019-03-28 15:17:07

标签: powershell

我写了一个PS脚本来备份备份文件夹中的配置文件。要求是仅复制具有配置文件的文件夹。
我正在使用copy-item命令,但是在运行脚本时,发现不必要的文件夹被复制了。

我已附上截图以获取更多详细信息。

当前:

Copy-Item -Path $SourcePath –Filter $fileType -Destination $DestinationPath –Recurse

我尝试过:

Get-ChildItem $sourcePath -File -Include "*.config" -Recurse |
    Where-Object { $_.DirectoryName -like "*$dirname*" }
Copy-Item -Path $files -Destination $dest

只有包含配置文件的文件夹应被复制到备份文件夹。

enter image description here

1 个答案:

答案 0 :(得分:0)

如果我正确理解了这个问题,请将您当前的脚本更改为此:

$sourcePath      = 'D:\Test'
$destinationPath = 'D:\Result'
$excludeFolder   = 'NoConfigFileFolder'

# create the destination folder if this does not yet exist
if (!(Test-Path -Path $destinationPath)) {
    New-Item -Path $destinationPath -ItemType Directory | Out-Null
}
Copy-Item -Path $sourcePath –Filter '*.config' -Destination $destinationPath –Recurse -Exclude "*$excludeFolder*"

应该工作。

如果结构是这样的:

D:\TEST
|   bla1.config
|   web1.config
|
+---ConfigFileFolder
|       bla.config
|       web.config
|
\---NoConfigFileFolder
        leavethis.config

生成的备份文件夹如下:

D:\RESULT
|   bla1.config
|   web1.config
|
\---ConfigFileFolder
        bla.config
        web.config