Search code examples
powershellpowershell-2.0powershell-3.0

Power shell code to remove special characters in the column headers(.csv file)


I'm trying to loop through 40 CSV files in a path and remove any characters that are not numeric,alphabets and space values only in the headers.

Below is my code i tried working on, This is working for headers in the files but also its replacing all the data in the file and i can see only headers without special characters in it, i'm just a beginner in power shell, not sure how to proceed further any help is much appreciated.

$path = "C:\AllFiles\"

Get-ChildItem -path $path -Filter *.csv | 

Foreach-Object {

$content = Get-Content $_.FullName

$content[0] = $content[0] -replace '[^0-9a-zA-Z, ]'|Set-Content $_.FullName

}

Solution

  • This should do the trick and should be the fastest method:

    $path = 'C:\AllFiles\'
    
    $collection = Get-ChildItem -path $path -Filter *.csv' 
    
    foreach( $file in $collection ) {
    
        $content = [System.IO.File]::ReadAllLines( $file.FullName )
    
        $content[0] = $content[0] -replace '[^0-9a-zA-Z, ]'
    
        [System.IO.File]::WriteAllLines( $file.FullName, $content ) | Out-Null 
    }