これは、USBドライブストレージを検出するための私のループです。
setlocal enabledelayedexpansion
REM get removable loaded drives:
for /f %%a in ('"wmic logicaldisk where (drivetype=2 and size is not null) get caption,size 2>nul|find ":""') do set usb=!usb! %%a
ほとんどのUSBドライブストレージを検出します。ただし、検出されないものもあります(16GBを超えるfat32または外付けドライブNTFS500mb 1 tbなど)
問題は「DRIVETYPE」に関係していると思います
Value Meaning
0 Unknown
1 No root directory
2 Removable disk
3 Local disk
4 Network drive
5 Compact disk
6 RAM disk
例:fat32 usbデバイス32GBストレージ、固定ディスク(リムーバブルディスクではない)としてリストします。
wmic logicaldisk get description,name
SO:7/8/8.1/10に勝つ
ループですべてのUSBストレージデバイスを検出するにはどうすればよいですか?ありがとう
Setlocalを設定しているため、コードが機能しないため、バッチを存続させる変数はありません。一方、デリムやトークンは使用しません。デフォルトでは、delims=
はスペースで、tokens=1
です。最後の行としてset usb
を入力すると、Usb= E:
(先頭にスペースを含む)のみが表示されます。可能なドライブはそれほど多くないので、バッチでフィルタリングを行い、より単純なwmic logicaldisk list brief
を使用します。
どのトークンを使用するかはあなた次第です。
@Echo off
setlocal enabledelayedexpansion
Set "USB="
REM get removable loaded drives:
for /f "tokens=1-5" %%a in (
'wmic logicaldisk list brief'
) do if %%b Equ 2 if %%d gtr 0 Set USB=!USB! %%a
Echo:Usb removable drives:%USB%
EndLocal&Set USB=%USB:~1%&Goto :Eof
[〜#〜] edit [〜#〜]収集されたUSBドライブを表示するためのエコーを追加しました。
> Get-UsbDrives.cmd
Usb removable drives: E:
HTH