l--*_*''' 0 powershell concatenation
我有一堆文本文件,需要将它们连接成 1 个字符串:
最终结果是内容的串联20211026_113900.sql + 20211027_083900.sql + 20211027_093900.sql
我们如何连接文件的内容以确保按字母顺序排列?
20211026_113900.sql
从 mytable1 中选择名称 GO
20211027_083900.sql
从 mytable2 GO 中选择名称
20211027_093900.sql
从 mytable3 GO 中选择名称
我期待的最终结果是:
从 mytable1 中选择名称 GO 从 mytable2 中选择名称 GO 从 mytable3 中选择名称 GO
使用以下命令枚举所有文件Get-ChildItem:
$files = Get-ChildItem -Path path\to\Scripts -File -Filter *.sql
Run Code Online (Sandbox Code Playgroud)
文件系统提供程序已经按排序顺序返回它们,但是Sort-Object如果您更舒服,您可以使用名称显式对它们进行排序:
$files = $files |Sort-Object -Property Name
Run Code Online (Sandbox Code Playgroud)
最后使用Get-Content -Raw将文件内容读入内存,并使用-join运算符将它们连接起来:
$concatenated = @(
$files |Get-Content -Raw
) -join [Environment]::NewLine
Run Code Online (Sandbox Code Playgroud)
$concatenated现在包含一个多行字符串,其中所有文件的内容*.sql均以换行符分隔
替换[Environment]::NewLine为' '将它们连接到与前一个文件相同的行,或-join在一元模式下使用:
$concatenated = -join @(
$files |Get-Content -Raw
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
665 次 |
| 最近记录: |