batch-file - 从命令中获取 USB 驱动器号并将它们用作选择变量
问题描述
我正在尝试创建一个批处理文件,用于将文件夹备份到 USB 驱动器。在某一点上,我希望批处理显示连接到计算机的所有可用 USB 驱动器的列表,然后要求用户选择其中一个驱动器号以继续。
至于列表:我想将这两个输出组合在每个 USB 驱动器的一行中
wmic logicaldisk where DriveType^=2 get deviceid
wmic diskdrive where mediatype^="removable media" get Caption, SerialNumber
至于选择命令:如何使用驱动器号作为用户选择的选项?
解决方案
以下代码应:
- 确定您的 USB 驱动器号。
- 如果没有找到通知你然后关闭。
- 如果只找到一个,则自动选择它。
- 如果找到多个,请提供选择选项。
@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:].
您需要做的就是将备份命令等放在底部。
推荐阅读
- python - 计算当前行和最后一行之间具有不同值的天数
- javascript - 样式不适用于 React Native 组件
- php - 在 foreach 中为每个数组结果赋值
- sql - 运行 DBMS_COMPARISON.CONVERGE 子程序时出现错误 ORA-00942
- angular - 验证角度中的特殊字符
- node.js - Node Google Calendar API 快速入门重定向网址
- amazon-web-services - 如何使用 Pulumi 导入现有的 S3 对象?
- angular - Uppercse 的角度变化输入
- c# - log4net RollingFileAppender 部署后停止工作
- scala - 如何在 spark scala 中编写固定宽度的输出文件