Powershellでループを書かずに指定回数処理を繰り返す

範囲演算子(..)とパイプ(|)でループ処理のようなことができる

普通にループで書くなら以下のようになる。

#forループの場合
for ($i=0; $i -lt 10; $i++){ echo "hoge" }
#foreachループの場合
foreach($cnt in 1..10){ echo "hoge" }

でも下のほうがすっきりしていると思う

PS D:\SandBox> 1..10 | %{ echo "hoge"}

変数も使える(一応実行例も載せた)

PS D:\SandBox> $limit=10
PS D:\SandBox> 1..$limit | %{ echo "hoge"}
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge

何が起こっているのか

  • 範囲演算子で指定個数の整数が生成される
  • パイプで渡してforeach-object(=%)する際は、普通は渡したオブジェクト($_)に対して処理をする
  • が、あえてそれをしないことで渡したオブジェクトの数だけ処理を実行させる

参考

05.範囲演算子 < 演算子 Tips メニュー < PowerShell Tips < HIRO's.NET ⇒範囲演算子の簡単な説明