バッチファイル

バッチファイルでPowerShellコマンドを呼び出してみた

バッチファイルとは、Windows環境で実行できるコマンド列を記述したテキストファイルであるが、バッチファイルから、PowerShellコマンド(コマンドプロンプトの上位互換にあたるもの)を呼び出すこともできる。

今回は、バッチファイル内でPowerShellコマンドを呼び出してみたので、そのサンプルプログラムを共有する。

なお、PowerShellについては、以下のサイト等を参照のこと。
https://and-engineer.com/articles/YTcPjRAAACQAOlud

前提条件

Windowsがインストールされた端末で操作すること。

また、PowerShellのバージョンが以下のようになっていること。
PowerShellバージョン

サンプルプログラムの作成

サンプルプログラムの構成は、以下の通り。
サンプルプログラムの構成

バッチファイルの中身は以下の通りで、バッチファイル内でPowerShellコマンドをそれぞれ呼び出している。

また、employee.xmlの内容は以下の通りで、全部で21行ある。
employee_xml



削除または保存していないWordドキュメントの復元方法【4DDiG Windowsデータ復元】ワード(Word)データ等のファイルを誤って削除してしまった場合は、通常はデータの復元ができませんが、4DDiGというソフトウェアを利用...

サンプルプログラムの実行結果

サンプルプログラムの実行結果は、以下の通り。

1) コマンドプロンプトを起動し、バッチファイルが存在するディレクトリ(C:\tmp)に移動し、各ファイルの存在を確認する。
サンプルプログラムの実行結果_1

2) バッチファイル(call_powershell.bat)を実行する。実行すると、コマンドプロンプトには以下の値が表示される。なお、2023/4/20に実行した結果を表示している。
サンプルプログラムの実行結果_2_1

上記バッチファイル内で実行しているコマンドを、PowerShellで実行した結果は以下の通りで、同じ結果が表示されることが確認できる。なお、2023/4/20に実行した結果を表示している。
サンプルプログラムの実行結果_2_2

サンプルプログラムの実行結果_2_3 サンプルプログラムの実行結果_2_4 サンプルプログラムの実行結果_2_5

ちなみに、「[System.Linq.Enumerable]::Count([System.IO.File]::ReadLines(‘ファイルパス’))」コマンドは、「(Get-Content ‘ファイルパス’).Length」コマンドを高速化したコマンドとなる。

その詳細は、「スクリプト内でサイズの大きなファイルの行数を取得する方法」を参照のこと。

要点まとめ

  • バッチファイルから、PowerShellコマンド(コマンドプロンプトの上位互換にあたるもの)を呼び出すことができる。
  • バッチファイルから、PowerShellコマンドを呼び出す際、引数を渡したり、戻り値を取得したりできる。