職場でbatファイル(コマンドプロンプト)を使用している。
そのうち、wmicコマンドを多量に使用している。
将来、wmicコマンドが廃止される事を知った。
廃止スケジュールは、Windows11 24H2で無効(Disable)化され、次期Windows(Windows12 ?)で削除されると発表されている。
batファイル内のwmicコマンドの代替えとして、ps1ファイル(PowerShell)内でCimInstanceを使いたい。
そこで、batファイル内でWindows のビルド番号を確認して22631(バージョン23H2)を超えていたらPowerShellのCimInstanceを使う。
それ以外(Windows10 や Windows11の23H2 以下のバージョン)なら従来通りwmicコマンドを使う。
その分岐処理をbatファイル内に追加したく、考案。
2024年04月24日水曜日にWindows 10とWindows 11で確認済み。
以下を、別途batファイルへ保存する。
保存する際は改行コードを「Cr + Lf」に。
文字コードを「Shift-JIS」又は「ANSI」にする。
@echo off
rem Windows のビルド番号が22631(バージョン23H2)を超えていたら、PowerShellのCimInstanceを使う。
rem それ以外(Windows10 や Windows11の23H2 以下のバージョン)なら従来通りwmicコマンドを使う。
rem 初期状態を新し目のビルド番号にしておく。
set osBuildNumber=22632
set flgCIM=1
rem レジストリ内から、Windowsのビルド番号を取得。(Windows10 と Windows11で有効。※次期Windows(Windows12 ?)でも有効かどうかは不明。)
for /f "tokens=1,2*" %%i in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "CurrentBuildNumber"' ) DO (
if "%%i"=="CurrentBuildNumber" (
set osBuildNumber=%%k
)
)
if %osBuildNumber% gtr 22631 (
rem echo osBuildNumberは22631を超えている。PowerShellのCimInstanceを使う。
set flgCIM=1
) else (
rem echo osBuildNumberは22631未満である。wmicコマンドを使う。
set flgCIM=0
)
echo osBuildNumber=%osBuildNumber%
rem 他のwmicコマンドを使っている箇所でも、変数「flgCIM」の値を参照する事で
rem wmicコマンドを使えるかどうかを共有できる。
echo flgCIM=%flgCIM%
if %flgCIM% equ 0 (
rem 従来通り、wmicコマンドを使う処理。
) else (
rem ps1ファイルを呼び出す等、PowerShellのCimInstanceを使う処理。
)
rem 続きの処理を色々実施。
pause