2013-09-27 86 views
0
$SearchFolder = "C:\Test\New folder\*.txt" 


$CSVFilePath = "C:\Test\txtfiles" # this doesn't work... 


$File = Select-String -Path $SearchFolder -Pattern new-print-server, default, dymo, zebra -NotMatch | select line, filename 



$File | foreach-object { 
$_.line = $_.line.replace("^",",") 

} 


$File | export-csv -path $CSVFilePath -NoTypeInformation 


$csv = Get-Content -path $CSVFilePath 



$csv | Out-File $CSVFilePath -Encoding utf8 


Invoke-Item $CSVFilePath 

這是我從網上獲得的腳本,我想將文本文件的文件夾轉換爲CSV文件。 這段代碼只允許我把所有的txt文件放到一個csv文件中。 我想將多個txt文件轉換爲多個具有相同名稱的csv文件。Powershell:將文本文件轉換爲CSV文件

回答

1

對於選擇字符串,你需要引用模式例如爲:

Select-String -Path $SearchFolder -Pattern 'new-print-server, default, dymo, zebra' -NotMatch | select line, filename 

看看這個讓你更接近:

$files = Get-ChildItem "C:\Test\New folder\*.txt" 
foreach ($file in $files) { 
    $notMatchedLines = $file | Select-String -Pattern 'new-print-server, default, dymo, zebra' -NotMatch | select line,filename 
    $notMatchedLines | foreach {$_.line = $_.line.replace("^",",")} 
    $notMatchedLines | Export-Csv ([io.path]::ChangeExtension($file.Fullname, '.csv')) -NoTypeInformation -Encoding UTF8 
} 
+0

感謝您幫助。但它給了我2列線和文件名,並且所有數據在一列(線)中彙集在一起​​。我不想看到行或文件名..我想將txt轉換爲csv文件沒有變化..我知道我發佈的腳本有選擇線,文件名...對不起混淆 – user2744565

+0

在這種情況下,將最後一行更改爲'$ file | Export-Csv ...'。 –