Windowsのポチポチ業務(マウスを使った業務)を爆速化するために、PowerShellを使った効率化の方法をお伝えしています。
前回の記事はこちらです。
前回はif文を使ってディレクトリ(フォルダ)の有無によって、処理を分岐させる方法をお伝えしました。
だいぶスクリプトらしくなってきましたね!
今回はForEach-Objectで繰り返し処理をする方法をお伝えします。変数・配列についても知る必要がありますので、順番に説明していきます。
それではいっていましょう!
PowerShellで変数を使う
変数とは
変数とは値を一時的に保存できる箱のようなものです。
例えば、コマンドレットを使い「ファイルの数」を取得したとします。
スクリプトの中で「ファイルの数」を使用するたびに、コマンドレットで取得するのは面倒ですよね。
そこで変数の出番です。
「ファイルの数」を一度変数に代入してしまえば、再度取得することなく「ファイルの数」を何度も使用することができます。
さらに変数には名前をつけることができます。
ファイル数であれば「file-number」などわかりやすい名称をつけることで、スクリプトが読みやすくなります。
PowerShellでの変数の使い方
変数には「$」マークを使用します。変数に値を代入するには代入演算子「=」を使用します。文字列も代入できますが、その場合は文字列をシングルクォーテーション「’」で囲ってください。
または
変数を使うときは、スクリプトの中で変数名を直接記載すればOKです。
PowerShellでは変数の名前に英数字も日本語も使用可能です。ただし、PowerShellでは大文字と小文字の区別はありません。$aaaと$AAAは同じ変数として認識されてしまうので注意してください。
実際にPowerShellで変数を使ってみましょう!変数「$file_number」に数値5を代入し、コマンドレットWrite-Hostでコンソールに表示します。
以下のスクリプトをISEで入力し実行してください。
$file_number = 5 Write-Host $file-number
実行すると…
このように$file-numberに代入した数値5が表示されました。
PowerShellで配列を使う
配列とは
配列とは同じ型の変数をまとめて使えるようにしたものです。
型とは数値、文字列など変数の種類のことと思ってください。
例えばある部署にいる5名の名前を変数に代入したい時
$name1 = ‘加藤’
$name2 = ‘吉田’
$name3 = ‘佐藤’
$name4 = ‘田中’
$name5 = ‘本田’
と5つ変数を用意するのは面倒ですよね。
配列を使えば上図のように複数の変数をまとまった1つのデータとして管理することができます。
PowerShellでの配列の使い方
配列の定義は変数と同じく「$」を使いますが、代入方法が異なります。
@()内に要素を書きます。各要素は「,」で区切ってください。
配列には0から始まるインデックスと呼ばれる数字が付与されています。インデックスを指定することで対応する要素を取り出すことができます。
インデックスは変数名の後ろの[]内で指定します。
実際にPowerShellで配列を使ってみましょう!以下のスクリプトをISEで入力して実行してみてください。
$name = @('加藤','吉田','佐藤','田中','本田') Write-Host $name[0] Write-Host $name[1] Write-Host $name[2] Write-Host $name[3] Write-Host $name[4]
実行すると…
このようにすべての要素が表示されました。
ForEach-Objectで繰り返し処理をする
さて、いよいよ繰り返し処理ができるコマンドレット:ForEach-Objectについて説明いたします。
配列で書いてもらったスクリプトをもう一度ご覧ください。
Write-Host $name[0] Write-Host $name[1] Write-Host $name[2] Write-Host $name[3] Write-Host $name[4]
同じような処理を何度も書くのって面倒くさいですよね。ForEach-Objectを使えば、配列の全要素に同じ処理を実施する処理を簡潔に書くことができます。
上図のように配列をまるごと引き渡すだけで、一つ一つの要素の指定はForEach-Objectが自動でやってくれます。
ForEach-Objectの具体的な使い方を説明したします。一番単純な例を示します。
$配列名 | ForEach-Object{ コマンドレット $_ }
「|」はパイプといいます。パイプを使うことでForEach-Objectに配列を引き渡すことができます。(パイプで配列を引き渡すパイプラインという仕組みについては次回の記事で詳しく説明します。)
「処理」の中で配列の要素を指定するには自動変数「$_」を使います。「$」ドルマークと、「_」アンダーバーで構成されています。
自動変数には文字通り自動で配列の要素が順番に代入され、処理が実施されます。
以下のスクリプトをISEで書いて実行してみましょう!
$name = @('加藤','吉田','佐藤','田中','本田') $name | ForEach-Object{ Write-Host $_ }
実行すると…
このようにたった1行の記載で配列の全要素を表示することができました。
まとめ
いかがだったでしょうか。
変数は数値や文字列を一時的に保存する箱のようなもので、配列は変数をまとめて管理し、インデックスで呼び出せる仕組みです。
ForEach-Objectを使うと配列の全要素に対して処理をするスクリプトをシンプルに記載することができます。
次回は配列をコマンドレットに引き渡すパイプラインという仕組みについて詳しく説明していきますよ!
最後までお読みいただきありがとうございました!
連載目次:Windowsのポチポチ業務を爆速化するPowerShell
Windowsのポチポチ業務(マウスを使った業務)を爆速化するために、PowerShellを使った効率化の方法をお伝えしています。- Windowsのポチポチ業務を爆速化するPowerShell、はじめのハードルぐーーんと下げてみます!
- Windowsのポチポチ業務を爆速化するPowerShell、キーボードを使わずササっと起動する方法
- Windowsのポチポチ操作を爆速化するPowerShellの絶対条件!ディレクトリとその移動をマスターしよう!
- Windowsのポチポチ業務を爆速化するPowerShell、コマンドレットを腹の底から理解する!
- Windowsのポチポチ業務を爆速化するPowerShell、オンラインヘルプでコマンドレットを使い倒す!
- Windowsのポチポチ業務を爆速化するPowerShell、統合開発環境ISEを紹介します!
- Windowsのポチポチ業務を爆速化するPowerShell、スクリプトを実行するための準備
- Windowsのポチポチ業務を爆速化するPowerShell、フォルダを作るスクリプトの作り方
- Windowsのポチポチ業務を爆速化するPowerShell、if文を使いフォルダの有無で処理を分岐させる方法
- Windowsのポチポチ業務を爆速化するPowerShell、ForEach-Objectで配列の全要素を処理する方法
- Windowsのポチポチ業務を爆速化するPowerShell、パイプラインを使いコマンドレット間で値を引き渡す方法
- Windowsのポチポチ業務を爆速化するPowerShell、ファイルを別フォルダにコピーし名称を変更する方法
- Windowsのポチポチ業務を爆速化するPowerShell、ファイル名を変更する方法
- Windowsのポチポチ業務を爆速化するPowerShell、正規表現で複雑なファイル名変更をする方法
- Windowsのポチポチ業務を爆速化するPowerShell、タスクスケジューラでスクリプトを決まった日時に起動する方法
- Windowsのポチポチ業務を爆速化するPowerShell、ファイルをバックアップするスクリプトの作り方
- Windowsのポチポチ業務を爆速化するPowerShell、関数を作ってスクリプトから呼び出す方法
- Windowsのポチポチ業務を爆速化するPowerShell、関数をコンソールで登録して呼び出す方法
- Windowsのポチポチ業務を爆速化するPowerShell、短いワードでサッと関数を呼び出すエイリアスの使い方
- Windowsのポチポチ業務を爆速化するPowerShell、関数やエイリアス保存場所のドライブを紹介します
- Windowsのポチポチ業務を爆速化するPowerShell、elseifで日付の元号を判定する方法
- Windowsのポチポチ業務を爆速化するPowerShell、日付を操るDatetime型