[英]Appending to the output of Powershell script
我正在尝试编写一个 powershell 脚本,该脚本将创建一个 sql 文件,其中包含给定目录中的文件名列表,并在每个文件名的开头附加了 PRINT 语句和“:r”命令,并以“GO”结尾的文件名。
请参阅下文。
PRINT 'C:/Schemas/Admin.sql'
GO
:r "C:/Schemas/Admin.sql"
GO
PRINT 'C:/Schemas/Audit.sql'
GO
:r "C:/Schemas/Audit.sql"
GO
我能够打印出文件名,但我似乎无法弄清楚如何为每一行添加前缀和后缀。 这就是我所拥有的:
(get-childitem "C:\schemas" -recurse | where {$_.extension -eq ".sql"}).fullname | out-file "C:\powerShell\masterSQL.sql"
因此,如果您可以使其以您想要的方式在控制台中显示,那么您可以捕获到变量或直接以相同的格式输出。 可以进行一些改进。
首先,对Get-ChildItem
命令本身进行过滤,让文件系统提供者Get-ChildItem
重任。 比使用Where-Object
获取所有文件和过滤要快得多
其次,使用Set-Content
这样你就不会遇到奇怪或意外的编码问题。
最后要注意的是$_
(全名)周围的双引号,这是为了确保路径被双引号包围。
(Get-ChildItem "C:\schemas" -Filter *.sql -Recurse).FullName |
ForEach-Object {
"PRINT ""$_"""
"GO"
":r ""$_"""
"GO"
} | Set-Content -Path "C:\powerShell\masterSQL.sql" -Encoding UTF8
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.