DaveWentzel.com            All Things Data

Working with Text Files

Read a text file line by line

cls 
Switch -file "f:\todo.txt"            
{            
     Default {$_}            
}


Comparing Text Files

Ideally, a tool like Notepad++ is better suited for this, but still...

cls            
@"
This text is the same
This text is a little different
And this is the same
"@ >old.txt            
            
@"
This text is the same
This text is a little differnt
And this is the same
"@ >new.txt            
            
compare-object -referenceObject $(Get-Content old.txt) -differenceObject $(Get-Content new.txt) -includeEqual            
            
remove-item old.txt            
remove-item new.txt

Generates this:

 

InputObject                                                                     SideIndicator                                                                 
-----------                                                                     -------------                                                                 
This text is the same                                                           ==                                                                            
And this is the same                                                            ==                                                                            
This text is a little differnt                                                  =>                                                                            
This text is a little different                                                 <=          

 

InputObject                                                                     SideIndicator                                                                 
-----------                                                                     -------------                                                                 
This text is the same                                                           ==                                                                            
And this is the same                                                            ==                                                                            
This text is a little differnt                                                  =>                                                                            
This text is a little different                                                 <=          

 

 

InputObject                                                                     SideIndicator                                                                 
-----------                                                                     -------------                                                                 
This text is the same                                                           ==                                                                            
And this is the same                                                            ==                                                                            
This text is a little differnt                                                  =>                                                                            
This text is a little different                                                 <=          

Determine a File's encoding by looking at the BOM

function Get-FileEncoding
{
    [CmdletBinding()] Param (
     [Parameter(Mandatory = $True, ValueFromPipelineByPropertyName = $True)] [string]$Path
    )
 
    [byte[]]$byte = get-content -Encoding byte -ReadCount 4 -TotalCount 4 -Path $Path
 
    if ( $byte[0] -eq 0xef -and $byte[1] -eq 0xbb -and $byte[2] -eq 0xbf )
    { Write-Output 'UTF8' }
    elseif ($byte[0] -eq 0xfe -and $byte[1] -eq 0xff)
    { Write-Output 'Unicode' }
    elseif ($byte[0] -eq 0 -and $byte[1] -eq 0 -and $byte[2] -eq 0xfe -and $byte[3] -eq 0xff)
    { Write-Output 'UTF32' }
    elseif ($byte[0] -eq 0x2b -and $byte[1] -eq 0x2f -and $byte[2] -eq 0x76)
    { Write-Output 'UTF7'}
    else
    { Write-Output 'ASCII' }

 

}

 

PowerShell Home

Add new comment