Запуск двухместных на один файл - PullRequest
1 голос
/ 04 февраля 2012

У меня есть следующий код:

    if(Test-Path $filename ) {
    # Remove quotes (")
    (get-content $filename) -replace('"','') | Out-File $filename -Force  
    $allText = [IO.File]::ReadAllText("$filename") -replace "`r`n?", "`n" 
    $encoding = New-Object System.Text.ASCIIEncoding    
    [IO.File]::WriteAllText("$filename", $allText, $encoding)
}

, но я думаю, что делать две замены - это нонсенс.Есть ли способ, которым я могу объединить два?

Ответы [ 3 ]

2 голосов
/ 05 февраля 2012

Это работает для вас?

if(Test-Path $filename ) {
$allText = ([IO.File]::ReadAllText("$filename") -replace "`r`n?", "`n") -replace '"','' 
$encoding = New-Object System.Text.ASCIIEncoding    
[IO.File]::WriteAllText("$filename", $allText, $encoding)

}

1 голос
/ 04 февраля 2012

Попробуйте этот 1 вкладыш.

[IO.File]::WriteAllText( $filename , ([IO.File]::ReadAllText($filename) -replace "`r|""",''), [Text.Encoding]::ASCII)

Регулярное выражение сопоставляет возврат каретки или двойные кавычки, используя символ бара, и удаляет их.

Get-Content не работает с -replace для замены возврата каретки, а Set-Content добавляет возврат каретки + перевод строки в самом конце файла, поэтому придерживайтесь [IO.File].

1 голос
/ 04 февраля 2012

Вы можете упростить скрипт следующим образом.Прочитайте контент, присоединитесь к «n" (so you don't need to replace it, because Powershel returns lines from Get-Content`) и замените кавычки:

$c = (get-content $filename) -join "`n" -replace '"',''
[IO.File]::WriteAllText($fileName, $c, [text.encoding]::ASCII)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...