範囲演算子(..)とパイプ(|)でループ処理のようなことができる
普通にループで書くなら以下のようになる。
#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 ⇒範囲演算子の簡単な説明