답변:
파일의 전체 내용을 가져 오려면 :
$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
\r\n이 계산됩니다.
Invoke-WebRequest있습니까?
참고로 PowerShell 3.0 Get-Content에서는 새 Raw 스위치와 함께 cmdlet을 사용할 수 있습니다 .
$text = Get-Content .\file.txt -Raw
Get-Content가 그랬지만 3.0이 되어서야 -Raw. 그것 없이는 라인 배열로 저장됩니다.
-Raw매개 변수가 네이티브에 의해 구현되지 않는다고 말하는 것은 도움이되지 않습니다 .
$text = Get-Content $filePath | Out-String
은 IO.File.ReadAllText그것을에서 파일을 찾습니다, 상대 경로로 나를 위해 작동하지 않았다 %USERPROFILE%\$filePath(적어도 파워 쉘 ISE에서 실행하는 경우) 대신에 현재 디렉토리의 :
$text = [IO.File]::ReadAllText($filePath)
$text = Get-Content $filePath -Raw
[IO.File]::ReadAllText((Resolve-Path $filePath))
내가 좋아하는 파일을 읽는 또 다른 접근 방식은 변수 표기법 또는 변수 구문 으로 다양하게 언급되며 단순히 달러 기호가 앞에 오는 중괄호 안에 파일 사양을 묶는 것입니다.
$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}작동하지 않습니다. 해당 드라이브의 파일 사양에는 제한이 없습니다. 절대적이거나 상대적 일 수 있습니다.
$content = [IO.File]::ReadAllText(".\test.txt")와 같은 일을하는 것 같습니다$content = (gc ".\test.txt" | out-string). 두 번째는 더 짧기 때문에 내가 선호하는 것입니다. 불행히도 총 줄 수를 계산하기 위해 제공 한 방법 중 어느 것도 후행 공백 줄을 고려하지 않습니다. 다른 아이디어가 있습니까?