回答:
ファイルの内容全体を取得するには:
$content = [IO.File]::ReadAllText(".\test.txt")
行数:
([IO.File]::ReadAllLines(".\test.txt")).length
または
(gc .\test.ps1).length
後続の空行を含めるためのハックのようなもの:
[io.file]::ReadAllText(".\desktop\git-python\test.ps1").split("`n").count
\r\n
がカウントされます。
Invoke-WebRequest
ますか?
余談ですが、PowerShell 3.0ではGet-Content
、新しいRawスイッチでコマンドレットを使用できます。
$text = Get-Content .\file.txt -Raw
Get-Content
はそうしましたが、3.0になるまでは得られませんでした-Raw
。それがなければ、それは行の配列として保存されます。
-Raw
パラメーターがネイティブによって実装されていないことを言っていることを助けません。
$text = Get-Content $filePath | Out-String
IO.File.ReadAllText
それは、ファイルを探し、相対パスで私のために動作しませんでした%USERPROFILE%\$filePath
(少なくとも、PowerShellのISEから実行している場合)の代わりにカレントディレクトリの:
$text = [IO.File]::ReadAllText($filePath)
$text = Get-Content $filePath -Raw
[IO.File]::ReadAllText((Resolve-Path $filePath))
私がたまたま好きなファイルを読み取るもう1つの方法は、変数表記または変数構文と呼ばれ、ドル記号が前に付いた中括弧でファイル指定を囲むだけです。
$content = ${C:file.txt}
この表記は、L値またはR値として使用できます。したがって、次のようなものを使用してファイルに簡単に書き込むことができます。
${D:\path\to\file.txt} = $content
もう1つの便利な使用法は、一時ファイルやサブ式なしでファイルを適切に変更できることです。次に例を示します。
${C:file.txt} = ${C:file.txt} | select -skip 1
何かを見つけるのがとても難しかったので、最初はこの表記に魅了されました!PowerShell 2.0仕様でさえ、それを使用している1行だけを一度だけ示していますが、使用の説明や詳細はありません。その後、PowerShell変数に関するこのブログエントリを見つけました。
これを使用する上での最後の注意:ドライブ指定を使用する必要があります。つまり${drive:filespec}
、上記のすべての例で行ったように。ドライブ(例:)${file.txt}
がないと動作しません。そのドライブのファイル指定に制限はありません。それは絶対的または相対的なものです。
$content = [IO.File]::ReadAllText(".\test.txt")
と同じことをするよう$content = (gc ".\test.txt" | out-string)
です。2つのうち2つ目は短いので、それが私の好みです。残念ながら、行の総数を計算するために提供した方法のどちらも、末尾の空白行を考慮に入れていません。他のアイデアはありますか?