質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

Q&A

解決済

1回答

1230閲覧

devconを使用したbatファイルについて

R_NaKaMa

総合スコア6

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

0グッド

0クリップ

投稿2017/11/17 11:07

編集2017/11/20 00:23

###前提・実現したいこと
devcon.exeを使用し複数の端末のBluetooth機能をbatファイルから無効にしたいと考えているのですが、for文の中身がうまく動作しない状態です。。
for /f "delims=" %%i in ('devcon.exe hwids ^=Bluetooth')で
1行ずつ取得して、一番長いハードウェアIDを利用したいと考えております。
下記のコードはHardware IDs:とCompatible IDs:の間のIDだけ取得するように記述しております。
初心者のため大変見づらいと思いますが、ご回答いただければ幸いです。

###該当のソースコード

@echo off setlocal enabledelayedexpansion cd /d %~dp0 set HWID=" Hardware IDs:" set CPID=" Compatible IDs:" set flag="OFF" set result= for /f "delims=" %%i in ('devcon.exe hwids ^=Bluetooth')do ( set id=%%i call :FlagSet "!id!" rem "flag"が"ON"でかつ"id"がHardware IDs:ではない場合 if !flag!=="ON" if not "!id!"==!HWID! ( call :Get_Strlen1 "!result!" call :Get_Strlen2 "!id!" rem "result"より"id"の文字数が多い場合実行  if !strlen! lss !strlen2! ( set result="!id!" ) ) ) goto :End :FlagSet rem "Hardware IDs"が見つかったらONにする if %1==%HWID% ( set flag="ON" ) rem "Compatible IDs"が見つかったらOFFにする if %1==%CPID% ( set flag="OFF" ) exit /b rem "result"の文字数を数える :Get_Strlen1 set s=%1 set strlen=0 :LOOP_HEAD if defined s ( set "s=!s:~1!" set /A strlen=!strlen!+1 goto :LOOP_HEAD ) exit /b rem "id"の文字数を数える :Get_Strlen2 set s2=%1 set strlen2=0 :LOOP_HEAD2 if defined s2 ( set "s2=!s2:~1!" set /A strlen2=!strlen2!+1 goto :LOOP_HEAD2 ) exit /b :End devcon disable !result!

###試したこと
課題に対してアプローチしたことを記載してください

###補足情報(言語/FW/ツール等のバージョンなど)
devcon.exe hwids ^=Bluetoothの出力内容は以下のようになっています。

USB\VID_04C5&PID_1330\5&1D2C357B&0&11
Name: Generic Bluetooth Adapter
Hardware IDs:
USB\VID_04C5&PID_1330&REV_0001
USB\VID_04C5&PID_1330
Compatible IDs:
USB\Class_e0&SubClass_01&Prot_01
USB\Class_e0&SubClass_01
USB\Class_e0
BTH\MS_BTHBRB\6&2BF38B4D&0&1
Name: Microsoft Bluetooth Enumerator
Hardware IDs:
BTH\MS_BTHBRB
2 matching device(s) found.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sa-yu

2017/11/18 17:08

`devcon.exe hwids ^=Bluetooth`の出力例があると回答がつきやすくなると思いますよ。今のままだと、devconの出力結果を知っている人しか回答できないので。
R_NaKaMa

2017/11/20 00:24

ご指摘ありがとうございます。devcon.exe hwids ^=Bluetoothの出力例を追記しました。
guest

回答1

0

自己解決

自己解決しました。ありがとうございました。

投稿2017/11/20 06:53

R_NaKaMa

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問