PCのモデルでWindowsバッチ処理を分岐したくなったので調査してみました
PCのキッティング(納品されたPCを開梱して、お客様用環境に合わせた形でセットアップする作業)を担当した時の話になります。
「OS導入と設定」や「アプリの導入と設定」等が淡々と繰り返えされます。事前準備で1台当たりの作業効率を向上できるかが「鍵」になります。
この時は予算が厳しく、以前作成したWindowsバッチベースのツールを流用する事になり、最新ドライバーを導入部分でモデル別に実施するよう更新が必要となりました。
「モデル別にバッチファイルを分ければよい」と思われますが、選択ミスが考えられるので、バッチで処理をする事は必須でした。
インターネットを調査しますと同じような問題を抱えた方が多いのか、「wmic csproduct get Name」コマンドを使えばよい事が判りました。
コマンドの出力の使用モデル名が2行目に出る事が判りました。
![](https://assets.st-note.com/img/1689982315863-WlgZl3PIIx.png)
「コマンド出力の2行目を取得する方法を調査」した所、海外のサイトで類似の処理が見つかりましたのでそちらを参照変更してみました。
ただし「Echo Off」は必須となります。
for /f "usebackq delims==, skip=1" %%i in (`wmic csproduct get Name`) do (
set name=%%i
goto next
)
:next
これでモデル名を取り出せたので、分岐が可能となりました。
補足
「WMI」コマンドラインの利用は、Windows21H1からは非推奨になっており、PowerShellへの移行をすすめられています。機会がありましたらUpgrageを行いたいと思います。