我有以下代码:
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)
}
但我认为做两个替换是有点胡说八道。有没有办法把两者结合起来?
答案 0 :(得分:2)
这对你有用吗?
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 :(得分:1)
您可以像这样简化脚本。阅读内容,加入“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)
答案 2 :(得分:1)
试试这个1班轮。
[IO.File]::WriteAllText( $filename , ([IO.File]::ReadAllText($filename) -replace "`r|""",''), [Text.Encoding]::ASCII)
正则表达式使用条形字符匹配回车符或双引号并删除它们。
Get-Content
无法使用-replace
替换回车符,Set-Content
在文件的最后添加回车符+换行符,因此坚持使用{{1} }}