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
我正在尝试构建一个 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