从命令获取 USB 驱动器号并将它们用作选择变量

Aquiring USB Drive Letters from command and use them as choice variables

我正在尝试创建用于将文件夹备份到 USB 驱动器的批处理文件。在某一点上,我希望批处理显示连接到计算机的所有可用 USB 驱动器的列表,然后要求用户 select 其中一个的驱动器号以继续。

至于列表:我想将每个 USB 驱动器的这两个输出组合成一行

wmic logicaldisk where DriveType^=2 get deviceid

wmic diskdrive where mediatype^="removable media" get Caption, SerialNumber

至于选择命令:如何使用驱动器号作为用户选择 select 来自?

下面的代码应该:

  1. 确定您的 USB 盘符。
  2. 如果有 none 找到通知您然后关闭。
  3. 如果只找到一个,select 自动找到。
  4. 如果找到多个离子,请提供 select离子选择。
@Echo Off
SetLocal EnableExtensions EnableDelayedExpansion
Set "USBDrv="
For /F Tokens^=2^ Delims^=^" %%G In ('%SystemRoot%\System32\wbem\WMIC.exe
 DiskDrive Where "InterfaceType='USB'" Assoc:List
 /AssocClass:Win32_DiskDriveToDiskPartition 2^>NUL
 ^| %SystemRoot%\System32\findstr.exe "^__R"'
) Do For /F Tokens^=4^ Delims^=^" %%H In ('%SystemRoot%\System32\wbem\WMIC.exe
 Path Win32_LogicalDiskToPartition ^| %SystemRoot%\System32\findstr.exe /C:"%%G"
 2^>Nul') Do Set "USBDrv=!USBDrv!%%H"
If Not Defined USBDrv Echo No USB drive connected.&& GoTo :EndIt
If "%USBDrv:~2%" == "" (GoTo Selected) Else Echo Which USB drive %USBDrv::=: %? 
For /F "Tokens=2 Delims=?" %%G In ('%SystemRoot%\System32\choice.exe
 /C %USBDrv::=% 2^>NUL') Do Set "USBDrv=%%G:"

:Selected
Call :Task %USBDrv%

:EndIt
%SystemRoot%\System32\timeout.exe /T 5 1>NUL 
GoTo :EOF

:Task
Rem Place your commands here [%1 will be the USB drive e.g. E:].

您需要做的就是将备份命令等放在底部。