PowerShellの開発でお困りのことはありませんか?
そんな悩みは
当サイトで解決!!
19.複数行の入力を取得する
UPDATE:2008/05/03
PowerShellでは複数行の入力を読み取るコマンドレットがありません。
そこでコマンドラインから複数行の入力を取得する関数を作成しました。
下記が、複数行の入力を受け取るRead-MultiLine関数です。
Read-MultiLine.ps1
#========================================================================================= # Read-MultiLine: コマンドラインから複数行の入力を受け取る # # UPDATE 2008/04/24 Ver.1.0.0 # 2008/05/01 Ver.1.0.1 終了判定文字に1文字以上の文字列を指定できるよう修正 # # copyright HIRO's.NET(http://hiros-dot.net/) #========================================================================================= function global:Read-MultiLine ( [string]$prompt, [string]$endChar = ";" ){ if ($args[0] -eq "-?" ) { Write-Host @" 名前: Read-MultiLine
概要: コマンドラインから複数行文字列を取得します。
構文: Read-MultiLine [-prompt] [-endChar]
使用方法: -------------------------- 例 1 -------------------------- `$a = Read-MultiLine この例はコマンドラインから複数行を取得し行終端が";"の場合に読み取りを中止し結果を返します。 入力の終了を判定する文字は";"が規定値です。 -------------------------- 例 2 -------------------------- `$a = Read-MultiLine -prompt "文字列を入力してください" この例はプロンプトに"文字列を入力してください"と表示した後に入力を受け付けます。 -------------------------- 例 3 -------------------------- `$a = Read-MultiLine -endChar "#" この例は入力の終了を判定する文字を"#"とします。 ユーザー入力の行終端が"#"である場合に、入力を中断し結果を返します -------------------------- 例 4 -------------------------- `$a = Read-MultiLine -endChar "EOF" この例は入力の終了を判定する文字を"EOF"とします。 ユーザー入力の行終端が"EOF"である場合に、入力を中断し結果を返します "@ -foregroundcolor Cyan return } if ( $prompt.Length -gt 0 ){ Write-Host ($prompt + ":") } while(1) { $ip += Read-Host if ($ip.SubString($ip.Length - $endChar.Length) -eq $endChar){ break; } else{$ip += "`n"} } #Write-Host $ip return $ip.Substring(0, $ip.Length - $endChar.Length) }
|
この関数は、実行すると";"が入力されるまで、複数行に渡る文字列の読み取りを行います。
List1
PS > $inp = Read-MultiLine ABC DEF GHI;
|
下記のようにするとプロンプトを表示した後に入力を受けつけます。
List2
PS > $inp = Read-MultiLine "入力してください" 入力してください: This is Read-MultiLine Command;
|
また、下記のようにすると終了判定文字を";"から"#"に変更することができます。
List3
PS > $inp = Read-MultiLine -endChar "#" ABC DEF GHI#
|