0

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

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

wmic logicaldisk where DriveType^=2 get deviceid

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

至于选择命令:如何使用驱动器号作为用户选择的选项?

4

1 回答 1

1

以下代码应:

  1. 确定您的 USB 驱动器号。
  2. 如果没有找到通知你然后关闭。
  3. 如果只找到一个,则自动选择它。
  4. 如果找到多个,请提供选择选项。
@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:].

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

于 2021-04-27T10:12:01.600 回答