3
votes

I have the following powershell command that recursively loops through all .sql files in a folder ($ScriptFolder) and appends it to another sql file ($TargetFile).

Get-ChildItem -path "$ScriptFolder" -recurse |?{ ! $_.PSIsContainer } |?{($_.name).contains(".sql")} | %{ Out-File -filepath $TargetFile -inputobject (get-content $_.fullname) -Append }

What I would like to do as each .sql is appended to the target file, add text to the target file at the point .sql is appended to it and add text after the .sql is appended to the target file.

I am new to powershell, so could anyone outline how i might do this? Thanks

1

1 Answers

5
votes

Here's something that might do the trick for you:

Get-ChildItem -recurse -include "*.sql" |
Foreach-Object { Add-Content -Path $targetFile -Value "-- Begin $($_.FullName)--`r`n$(Get-Content $_ | Out-String)--End $($_.FullName)--`r`n"; }

That code will loop through all .sql files recursively, adding their contents to $targetFile as you did. It wraps each addition with --Begin <full path>-- and --End <full path>--. FYI, I pipe the output of Get-Content to Out-String because Get-Content returns an array of objects. If you leave out that pipe, this code will strip newlines from your source files.