2013-10-01 4 views
0

Вот мой код vb. Это именно то, что я хочу сделать с powershell.Как заменить с помощью powershell

Public Sub Main() 
Dim file As New System.IO.StreamReader(Dts.Variables("User::str_SourcePath").Value.ToString()) 
Dim data As String 
    data = file.ReadToEnd() 
    data = data.Replace("""" & vbCrLf, """" & vbLf) 
    data = data.Replace(vbCrLf, " ") 
    data = data.Replace(vbCr, vbLf) 
    data = data.Replace(Chr(32) & vbCrLf, vbLf) 
    data = data.Replace(Chr(32) & vbLf, vbLf) 
    data = data.Replace("'", "") 
    data = data.Replace(Chr(0), "") 
file.Close() 
    Dim writer As New System.IO.StreamWriter(Dts.Variables("User::str_SourcePath").Value.ToString(), False) 
writer.Write(data) 
    writer.Flush() 
    writer.Close() 

    Dts.TaskResult = ScriptResults.Success 
End Sub 

Мои Powershell Сценарий:

Get-ChildItem "C:\Users\abc\Desktop\Files" | ForEach-Object { 
$Content = Get-Content $_.fullname 
$Content = ForEach-Object { $Content -replace "\r\n","\n" } 
$Content = ForEach-Object { $Content -replace "'","" } 
$Content = ForEach-Object { $Content -replace "chr(0)","" } 
Set-Content $_.fullname $Content -Force 
} 

Я пытаюсь заменить несколько символов ASCII управления код (0 до 10) и от (12 до 15) и (17), а также из (21 до 30).

+0

Возможный дубликат [Powershell: Найти/заменить шаблон управляющих символов ASCII] (http://stackoverflow.com/questions/15343442/powershell-find-replace-pattern-of-ascii-control-characters) – Neolisk

ответ

1

В PowerShell escape-символ не \, потому что это допустимый символ пути. Вместо этого используйте обратную сторону, например. "` `П". Для произвольных кодов ASCII используйте «$ ([char] number)», например. "$ ([Символ] 2)".

+0

Backtick does не работает для любого кода ASCII. – Neolisk

+0

Ну, я бы не сказал, что он не работает ни для какого ASCII-кода. "{backtick} 0" работает для null или chr (0), "{backtick} a" для chr (7), "{backtick} b" для chr (8) и "{backtick} f" для chr (12) , Я согласен с тем, что он не работает для всех кодов ASCII. :-) –

+0

Плохой английский с моей стороны. Я имел в виду, что вы не можете использовать обратную ссылку для указания произвольных кодов ASCII. И вы просто накрыли эту часть красиво. Здесь есть +1. :) – Neolisk

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