Ore*_*yan 5 powershell streamwriter
我需要尽快写入许多文件,但我没有按照我使用的方式使用 Streamwriter 获得我想要的结果。例如,如果我写...
$File = "c:\somefile"
$Contents = get-content $File
$Contents | set-content $File
Run Code Online (Sandbox Code Playgroud)
所以读取文件的内容,什么都不做,然后写回来......文件是完全一样的。但是如果我写...
$File = "c:\somefile"
$Contents = get-content $File
$stream = [System.IO.StreamWriter] $File
$stream.WriteLine("$contents")
$stream.close()
Run Code Online (Sandbox Code Playgroud)
然后该文件看起来好像所有换行符都被忽略了,并且有点混乱。我需要做什么才能正确写入?非常感谢!
Get-Content和Set-ContentGet-Content当您调用时,它会逐行读取文件(它不会给您换行符)。所以如果你这样做:
$Contents = Get-Content $File
Run Code Online (Sandbox Code Playgroud)
然后$Contents包含表示文件中的行的字符串数组。
通过将其发送回Set-Content(它知道如何处理字符串数组或管道),它将写入lines。
当您使用"$contents"数组项时,将用空格而不是换行符连接,因此当您使用时,$stream.WriteLine您正在编写一个字符串,末尾有一个换行符。
如果是 PowerShell 3+,请使用Get-Content $File -Raw一次读取整个文件,或者使用以下命令自行将其变成一个字符串。
$content = (Get-Content $File) -join "`r`n"
Run Code Online (Sandbox Code Playgroud)不要这样做,而是使用这个:
$stream.Write(($content -join "`r`n"))
Run Code Online (Sandbox Code Playgroud)请注意,我使用Write()and 不是WriteLine()因为您不需要在文件末尾插入额外的行(除非您这样做,但这可能会造成混乱,可能需要将其添加到内容中)。
| 归档时间: |
|
| 查看次数: |
20468 次 |
| 最近记录: |