Powershell命令根据过滤器从多个文件夹中获取所有文件

Powershell command to get all files from multiple folders based on filter

我正在尝试构建一个 powershell 命令以从多个文件夹中提取所有文件并合并到一个文件中。

Basefolder >
Release1 > sp01.sql > sp02.sql
Release2 > sp03.sql > sp04.sql > sp05.sql

我需要将脚本合并到单个 sql 文件中。

我试过的脚本:

Get-ChildItem $(Pipeline.Workspace)/BaseFolder -Filter "Release*" -include "*.sql" -rec | 
    ForEach-Object {gc $_; "GO"} | 
    Out-File $(System.DefaultWorkingDirectory)/combined-script.sql

它returns 一个空文件。你能帮忙吗?

Get-ChildItem 提供程序 cmdlet 完全能够一次从多个目录中枚举和过滤文件:

$sqlScripts = Get-ChildItem -Path .\path\to\Release1,.\path\to\Release2 -File -Filter *.sql

您还可以链接多个 Get-ChildItem 调用,让第一个将基目录提供给第二个:

$sqlScripts = Get-ChildItem -Path .\base\Release* -Directory |Get-ChildItem -File -Filter *.sql

现在你只需要读取所有文件的内容并写入一个新文件即可:

$sqlScripts |ForEach-Object { $_ |Get-Content; "GO" } |Set-Content .\path\to\concatenated.sql