1

Folder LogBackup contains 40K xml files. I want to read each xml file and copy its contents on different line of text file. For example, if I have 2 xml files:

xmlFile1.xml

<?xml version = "1.0" encoding = "ISO-8859-1" ?><Acknowledgement><HeaderData><Description>Estimate</Description> <SiteQueueName>QUEUE</SiteQueueName><LineItems>7</LineItems><TimeStamp>201408310925444111</TimeStamp></HeaderData><OrderDetail>

xmlFile2.xml

<?xml version = "1.0" encoding = "ISO-8859-1" ?><Acknowledgement><HeaderData><Description>Estimate</Description> <SiteQueueName>QUEUE2</SiteQueueName><LineItems>7</LineItems><TimeStamp>201408310925380810</TimeStamp></HeaderData><OrderDetail>

Both of these should be copied to output.log:

<?xml version = "1.0" encoding = "ISO-8859-1" ?><Acknowledgement><HeaderData><Description>Estimate</Description> <SiteQueueName>QUEUE</SiteQueueName><LineItems>7</LineItems><TimeStamp>201408310925444111</TimeStamp></HeaderData><OrderDetail>
<?xml version = "1.0" encoding = "ISO-8859-1" ?><Acknowledgement><HeaderData><Description>Estimate</Description> <SiteQueueName>QUEUE2</SiteQueueName><LineItems>7</LineItems><TimeStamp>201408310925380810</TimeStamp></HeaderData><OrderDetail>

This is what I got so far, but it is not working :(

Get-ChildItem "C:\LogBackup" -Filter *.xml | 
Foreach-Object 
{
    $content = Get-Content $_.FullName
    #save content to a new file 
    $content | Set-Content ('output.log')
}
2

1 Answer 1

1
Set-Content

Replaces the existing data in a file.

Add-Content

Appends data to a file.

Therefore, you are only writing the last XML you check to the output.log file, and the rest is discarded along the way.

Here's the Technet article, for reference.

... and the modified code snippet (note I dump the output.log at the top, now):

Clear-Content ('C:\LogBackup\Output.log')
Get-ChildItem "C:\LogBackup" -Filter *.xml |
Foreach-Object 
{
   $content = Get-Content $_.FullName
   $content | Add-Content ('C:\LogBackup\Output.log')
}

Yielded:

<?xml version = "1.0" encoding = "ISO-8859-1" ?><Acknowledgement><HeaderData><Description>Estimate</Description> <SiteQueueName>QUEUE</SiteQueueName><LineItems>7</LineItems><TimeStamp>201408310925444111</TimeStamp></HeaderData><OrderDetail>
<?xml version = "1.0" encoding = "ISO-8859-1" ?><Acknowledgement><HeaderData><Description>Estimate</Description> <SiteQueueName>QUEUE2</SiteQueueName><LineItems>7</LineItems><TimeStamp>201408310925380810</TimeStamp></HeaderData><OrderDetail>
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.