从命令获取 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 来自?
下面的代码应该:
- 确定您的 USB 盘符。
- 如果有 none 找到通知您然后关闭。
- 如果只找到一个,select 自动找到。
- 如果找到多个离子,请提供 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:].
您需要做的就是将备份命令等放在底部。
我正在尝试创建用于将文件夹备份到 USB 驱动器的批处理文件。在某一点上,我希望批处理显示连接到计算机的所有可用 USB 驱动器的列表,然后要求用户 select 其中一个的驱动器号以继续。
至于列表:我想将每个 USB 驱动器的这两个输出组合成一行
wmic logicaldisk where DriveType^=2 get deviceid
wmic diskdrive where mediatype^="removable media" get Caption, SerialNumber
至于选择命令:如何使用驱动器号作为用户选择 select 来自?
下面的代码应该:
- 确定您的 USB 盘符。
- 如果有 none 找到通知您然后关闭。
- 如果只找到一个,select 自动找到。
- 如果找到多个离子,请提供 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:].
您需要做的就是将备份命令等放在底部。