我有以下powershell命令,以递归方式循环遍历文件夹($ ScriptFolder)中的所有.sql文件,并将其附加到另一个sql文件($ TargetFile)。
Get-ChildItem -path "$ScriptFolder" -recurse |?{ ! $_.PSIsContainer } |?{($_.name).contains(".sql")} | %{ Out-File -filepath $TargetFile -inputobject (get-content $_.fullname) -Append }
我希望做什么,因为每个.sql都附加到目标文件,在该点添加文本到目标文件.sql附加到它并在.sql附加到目标文件后添加文本。< / p>
我是PowerShell的新手,所以有人可以概述我是如何做到的吗?感谢
答案 0 :(得分:5)
这可能对你有所帮助:
Get-ChildItem -recurse -include "*.sql" |
Foreach-Object { Add-Content -Path $targetFile -Value "-- Begin $($_.FullName)--`r`n$(Get-Content $_ | Out-String)--End $($_.FullName)--`r`n"; }
该代码将递归遍历所有.sql文件,并将其内容添加到$targetFile
。它会使用--Begin <full path>--
和--End <full path>--
包含每个添加内容。仅供参考,我将Get-Content
的输出传递给Out-String
因为Get-Content
返回了一个对象数组。如果省略该管道,此代码将从源文件中删除换行符。