PowerShellは、他のプログラミング言語と同じように条件文を使うことによって、
処理の分岐や繰り返しをすることができます。
今回はPowerShellの条件文を紹介していきます。
if文(分岐)
1 2 3 4 |
if (条件式) { ここに処理を記載する。 } |
ifによる分岐です。(条件式)の中身が正しければ、{}内の処理をします。
例として、メモ帳に数字を書いていくスクリプトです↓
1 2 3 4 5 6 7 8 9 10 |
notepad start-sleep -s 3 $i -eq 1 if ($i -eq 1) { [System.Windows.Forms.SendKeys]::SendWait("if文テスト") } |
指定の変数が数値や文字列の時に{}内を実行できます。例では$i = 1のとき、{}内を実行します。
-eqは、equal(「=」)と同義です。
さらにif文では次のように、複数の条件分岐を書くことができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
notepad start-sleep -s 3 $i = 3 if ($i -eq 1) { [System.Windows.Forms.SendKeys]::SendWait("if文テスト1") }elseif ($i -eq 2) { [System.Windows.Forms.SendKeys]::SendWait("if文テスト2") }else { [System.Windows.Forms.SendKeys]::SendWait("if文テストその他") } |
これは、$i=1の時は、「if文テスト1」、$i=2の時は、「if文テスト2」、$iが1でも2でもない場合、「if文テストその他」とメモ帳に入力しています。
for文(繰り返し文・ループ文)
1 2 3 4 |
for (初期化式; 条件式; 「初期化式」の増減) { 繰り返したい処理 } |
for文は、条件式を満たす限り、{}内の処理を何回実行するかを指定することができます。
スクリプト例です↓
1 2 3 4 5 6 7 8 9 |
notepad start-sleep -s 3 for ($i = 1; $i -le 10; $i++) { [System.Windows.Forms.SendKeys]::SendWait("for文テスト"+$i) [System.Windows.Forms.SendKeys]::SendWait("{Enter}") } |
メモ帳を起動して、「for文テスト」を入力して、改行という処理を10回繰り返しています。
for($i = 1;$i -le 10; $i++)を説明します。
「$i = 1」は、$iという変数に1を格納しています。
「$i -le 10」は、$iが10以下のとき{}内を実行する、という意味です。
(-leは短縮して書かれており、-le = less than or equal = 少ない、もしくは等しい = 以下という意味)
「$i++」は、{}内の処理を終えるたびに$iを1ずつ増やすことを意味しています。
for文の初期化式で使用した変数は、{}内で使用することも可能で、例のように、
何回繰り返しているのかなどがわかりやすくすることができます。
while文(繰り返し・ループ文)
1 2 3 4 |
while (条件式) { 繰り返す処理 } |
while文では、(条件式)内の条件を満たす限り、{}内の処理を永遠に行います。
スクリプト例です↓(実行している内容は、for文)と同じ。
1 2 3 4 5 6 7 8 9 10 |
notepad start-sleep -s 3 $i = 1 while ($i -le 10) { [System.Windows.Forms.SendKeys]::SendWait("while文テスト"+$i) [System.Windows.Forms.SendKeys]::SendWait("{Enter}") $i++ } |
$iが10以下の時、{}内の処理を永遠に行います。
{}内の最後で、$i++しているので、{}内を実行するたびに$iの変数が1ずつ増えていき、
$iが11の時に、while文の処理を抜けます。
$i++がなければ、{}内の処理を永遠に行います。
しかし、breakを使うことで、while文を途中で抜けることができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
notepad start-sleep -s 3 $i = 1 while ($i -le 10) { [System.Windows.Forms.SendKeys]::SendWait("if文テスト"+$i) [System.Windows.Forms.SendKeys]::SendWait("{Enter}") $i++ if ($i -eq 5) { break } } [System.Windows.Forms.SendKeys]::SendWait("breakでwhile文を抜ける。") |
上記のスクリプトでは、$iが5のときにbreakを通り、while文を抜けて「breakでwhile文を抜ける。」と入力しています。