Programing

PowerShell : 전체 텍스트 파일 내용을 변수에 저장

lottogame 2020. 8. 18. 08:06
반응형

PowerShell : 전체 텍스트 파일 내용을 변수에 저장


PowerShell을 사용 하여 텍스트 파일 전체 내용 (존재할 수도 있고 없을 수도있는 후행 빈 줄 포함)을 변수 에 저장하고 싶습니다 . 또한 텍스트 파일의 총 줄 수를 알고 싶습니다. 이를 수행하는 가장 효율적인 방법은 무엇입니까?


파일의 전체 내용을 가져 오려면 :

$content = [IO.File]::ReadAllText(".\test.txt")

라인 수 :

([IO.File]::ReadAllLines(".\test.txt")).length

또는

(gc .\test.ps1).length

후행 빈 줄을 포함하는 일종의 hackish :

[io.file]::ReadAllText(".\desktop\git-python\test.ps1").split("`n").count

참고로 PowerShell 3.0 Get-Content에서는 새 Raw 스위치와 함께 cmdlet을 사용할 수 있습니다 .

$text = Get-Content .\file.txt -Raw 

Powershell 2.0 :

(여기에서 자세한 설명 참조)

$text = Get-Content $filePath | Out-String

IO.File.ReadAllText그것을에서 파일을 찾습니다, 상대 경로로 나를 위해 작동하지 않았다 %USERPROFILE%\$filePath(적어도 파워 쉘 ISE에서 실행하는 경우) 대신에 현재 디렉토리의 :

$text = [IO.File]::ReadAllText($filePath)

Powershell 3 이상 :

$text = Get-Content $filePath -Raw

내가 좋아하는 파일을 읽는 또 다른 접근 방식은 변수 표기법 또는 변수 구문 으로 다양하게 언급되며 달러 기호가 앞에 오는 중괄호 안에 파일 사양을 간단히 묶는 것입니다.

$content = ${C:file.txt}

이 표기법은 L- 값 또는 R- 값 으로 사용될 수 있습니다 . 따라서 다음과 같이 파일에 쉽게 쓸 수 있습니다.

 ${D:\path\to\file.txt} = $content

또 다른 편리한 용도는 임시 파일과 하위 표현식없이 파일을 수정할 수 있다는 것입니다. 예를 들면 다음과 같습니다.

${C:file.txt} = ${C:file.txt} | select -skip 1

처음에는이 표기법에 대해 무엇이든 알아 내기가 매우 어려웠 기 때문에이 표기법에 매료되었습니다! PowerShell 2.0 사양조차도 사용에 대한 설명이나 세부 정보가 전혀없이 한 줄만 표시하여 한 번만 언급합니다. 이후에 좋은 통찰력을 제공 하는 PowerShell 변수 에 대한이 블로그 항목을 찾았습니다 .

사용에 대한 마지막 참고 사항 : ${drive:filespec}위의 모든 예제에서 수행 한 것처럼 드라이브 지정을 사용해야합니다 . 드라이브가 없으면 (예 :) ${file.txt}작동하지 않습니다. 해당 드라이브의 파일 사양에는 제한이 없습니다. 절대적이거나 상대적 일 수 있습니다.


Get-Content는 데이터를 가져와 한 줄씩 배열로 덤프합니다. 나열된 것보다 다른 특별한 요구 사항이 없다고 가정하면 콘텐츠를 변수에 저장할 수 있습니까?

$file = Get-Content c:\file\whatever.txt

실행 $file하면 전체 내용이 반환됩니다. 그런 다음 $file.Count(배열에 이미 count 메서드가 내장되어 있기 때문에) 총 줄 수를 얻을 수 있습니다.

도움이 되었기를 바랍니다! 나는 스크립팅 전문가는 아니지만 위의 많은 것보다 나에게 더 쉬웠다.

참고 URL : https://stackoverflow.com/questions/7976646/powershell-store-entire-text-file-contents-in-variable

반응형