0
votes

I'm trying to create a batch file for backing up folders to a usb drive. In a certain point I want the batch to show a list of all avalaible USB Drives connected to the computer and then asking the user to select the drive letter of one of them to proceed.

As for the the list: I want to combine those two outputs in one line per usb drive

wmic logicaldisk where DriveType^=2 get deviceid

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

As for the choice command: How can i use the drive letters as choices for the user to select from?

1
Neither the alias LogicalDisk with "DriveType='2'" or the alias DiskDrive with "MediaType='Removable Media'" selects USB drives. Not only are all USB drives not registered as Removable, all Removable drives are not USB. I'd advise that you use "InterfaceType='USB'" with DiskDrive in order to begin trying to determine the respective drive letter for each of its results.Compo

1 Answers

1
votes

The following code should:

  1. Determine your USB drive letter(s).
  2. If there are none found notify you then close.
  3. If only one is found, select it automatically.
  4. If several are found, offer a selection choice.
@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:].

All you should need to do is to place your backup command(s) etc. at the bottom.