programing

PowerShell에서 텍스트 파일에 새 줄 쓰기

bestprogram 2023. 8. 10. 18:59

PowerShell에서 텍스트 파일에 새 줄 쓰기

오류 로그 파일을 만들고 있습니다.현재 코드는 다음과 같습니다.

Add-Content -path $logpath $((get-date).tostring() + " Error " + $keyPath `
   + $value + " key " + $key +" expected: " + $policyValue `
   + "`n local value is: " +$localValue

내가 할 때Get-Content로그 파일에 "local value" 앞에 새 줄이 올바르게 표시됩니다.

그러나 메모장에서 로그 파일을 열면 모든 내용이 한 줄로 표시됩니다.텍스트 파일에도 새 줄을 삽입하려면 어떻게 해야 합니까?

`n라인 피드 문자입니다.메모장(Windows 10 이전 버전)에서는 줄 바꿈이 다음과 같이 인코딩될 것으로 예상합니다.`r`n(캐리지 리턴 + 라인 피드, CR-LF).유용한 편집기(SciTE, 메모장++, UltraEdit-32, Vim, ...)에서 파일을 열고 줄 바꿈을 CR-LF로 변환합니다.또는 PowerShell을 사용합니다.

(Get-Content $logpath | Out-String) -replace "`n", "`r`n" | Out-File $logpath

Environment 클래스의 정적 NewLine 속성을 사용하여 적절한 새 줄을 가져올 수 있습니다.

$errorMsg =  "{0} Error {1}{2} key {3} expected: {4}{5} local value is: {6}" -f `
               (Get-Date),$keyPath,$value,$key,$policyValue,([Environment]::NewLine),$localValue
Add-Content -Path $logpath $errorMsg

변수에 새 줄과 캐리지 리턴을 할당한 다음 PowerShell 스크립트 내부의 텍스트에 추가할 수도 있습니다.

$OFS = "`r`n"
$msg = "This is First Line" + $OFS + "This is Second Line" + $OFS
Write-Host $msg

사용해 보십시오.

Add-Content -path $logpath @"
$((get-date).tostring()) Error $keyPath $value
key $key expected: $policyValue
local value is:  $localValue
"@

파이프 명령을 사용할 때 값이 작동하지 않았습니다.사용하려고 했던 원본 Get | Add에 이어 "Value of nothing"으로 추가 콘텐츠를 만들었습니다.

$newfile = "C:\FilePath\Newfile.txt" 
$oldfile = "C:\FilePath\Oldfile.txt"

Add-Content -Path "$newfile" -value ""
Get-Content -Path "$oldfile | Add-Content -Path "$newfile"
"Line-1$([Environment]::NewLine)`"Line-2`"$([Environment]::NewLine)Line-3"| out-File c:\Temp\abc.txt 

enter image description here

enter image description here

언급URL : https://stackoverflow.com/questions/17434151/writing-new-lines-to-a-text-file-in-powershell