今回は接続毎に変更されるCOMポートをbatファイルを使って
任意のCOMポートに固定しようと作ってみました
※Windows内の重要なデータ"レジストリ"を変更する内容が含まれています
最悪Windowsが起動できなくなる恐れがありますので実行の際には十分注意してください。
作成したbatを配布しています
詳細はこちらの記事をご確認ください! batの内容が下記になります
@echo off
color 0A
rem //!このコマンドは管理者権限が必要です!//
:loop
rem //実行回数を表示//
set /a x=x+1
echo;
echo >実行回数:%x%回
echo;
echo --------変更前--------
rem //使用中COMのデータを読み取り//
reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Name Arbiter" /v "ComDB"
rem //使用中COMのデータを上書き(COM2まで使用中にする)16進数//
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Name Arbiter" /v "ComDB" /t "REG_BINARY" /d "0300000000000000000000000000000000000000000000000000000000000000" /f
echo;
echo --------変更後--------
rem //書き換え完了の確認//
reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Name Arbiter" /v "ComDB"
rem //書き換え要求//
echo;
set /p a=">もう一度書き換えますか(Y/N)?"
rem //"y","Y"を入力したらループへ//
if y==%a% (
cls
goto loop
) else (
if Y==%a% (
cls
goto loop
) else (exit)
)
rem //抜けた用//
echo ※不正な操作です※
timeout /t 2
exit
解説 実行内容としては単純ですが解説していきます
データ確認処理
まず現在使用中になっているCOMポートを確認するため"reg query "コマンドでサブキーを指定して値を確認します
"/v"はサブキー内の値を指定することでその中身のデータ値を確認
"/v"を省略することでサブキー内の値全てを確認できます
データ上書き処理
次に先ほど確認したデータ値を"reg add"コマンドで任意の値に上書きします
"/v" レジストリ値の指定
"/t" レジストリ値の種類の指定 今回はREG_BINARY(バイナリ値)
"/d" データ値の指定 16進数
"03 00 00...." ここでCOMポートを指定 使用中のCOMポート2まで 次に接続したときはCOM3になる
上書きした内容を確認するため再度"reg query"を実行
ループ処理をしているので続けて機器を接続する際は再度実行するために
実行要求を行い"Yes"の場合は再度実行し"それ以外"が選択されれば終了します
注意点
冒頭にも書きましたが"レジストリ"を上書きする処理がありますので
実行する際はバックアップを作成したり十分に注意してください
"レジストリ"を上書きするには管理者権限が必要になります
他のbatファイルで今回のCOMポートbatを起動させるため
今回は管理者権限付与コマンドは入れていません
一度接続した機器の情報は消えませんのでディバイスマネージャーには残ります
邪魔で消したい場合はディバイスマネージャーで消すかレジストリでも削除できるようですが権限が最上位の"TrustedInstaller"なのでアクセス権を変更する必要がありそうです
ということで今回は任意のCOMポートに固定できるbatファイルを紹介でした
その他にも便利なbatやコメントがあればぜひお願いします! 作成したbatを配布しています
詳細はこちらの記事をご確認ください!
Comments