2014-01-30 3 views
0

Я работаю над скриптом, чтобы отформатировать каталог, полный текстовых файлов, и экспортировать их в файлы CSV. Я хочу, чтобы он выполнял поиск и замену в каждом файле, чтобы отформатировать его правильно, экспортировать в CSV с тем же именем, а затем перейти к следующему txt-файлу. У меня есть поиск и замена, но не могу решить, как сохранить каждый текстовый файл с его исходным именем. Что я делаю не так?Сохранение нескольких текстовых файлов в файлы csv

$path = "H:\My Documents\EmailSaveAs\" 
$files = Get-ChildItem -Path $path -include *.txt -recurse 
echo $files 
foreach($file in $files) { 
    Foreach-Object { 
     $_ -replace "`r`n`t", "," -replace "\s`r`n", "," -replace "Bytes `r`nOut", "Bytes Out" -replace "`t", "," -replace "Idle-`r`ntimeout", "Idle-timeout" -replace ",#Date", "#Date" 
     } | 
Set-Content $path $(.BaseName + ".csv") 
} 

ответ

0

Попробуйте это:

$path = "H:\My Documents\EmailSaveAs\" 
$files = Get-ChildItem $path -include *.txt -recurse 
echo $files 
foreach($file in $files) { 
    $updatedContent = Get-Content $file.FullName -Raw | Foreach-Object { 
     $_ -replace "`r`n`t", "," -replace "\s`r`n", "," -replace "Bytes `r`nOut", "Bytes Out" -replace "`t", "," -replace "Idle-`r`ntimeout", "Idle-timeout" -replace ",#Date", "#Date" 
    } 
    $newFilename = [io.path]::ChangeExtension($file, ".csv") 
    Set-Content $newFilename $updatedContent 
} 

Ваш исходный код был доступ к $_, когда он не выполняется в контексте трубопровода. Обратите внимание, что параметр -Raw в Get-Content является новым в V3.

+0

Блестящий - это отлично работает! Спасибо огромное! – Dylan

+0

Или вместо того, чтобы читать переменную, задав переменную для нового имени, а затем настроив содержимое, вы можете просто передать его в out-file ala 'Get-Content $ file | Foreach-Object {do stuff} | Out-File ([io.path] :: ChangeExtension ($ file, ".csv")) ' – TheMadTechnician

+0

@ TheMadTechnician, что я изначально написал и сделал бы это так на практике, но я хотел сохранить больше скрипт внутри окна. Таким образом, прокрутка не потребуется, чтобы увидеть интересную часть решения. –

Смежные вопросы