[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 yakeyun 于 2022-5-13 14:06 编辑

回复 9# 夜宵

可以用下面代码获取到磁盘容量,然后除以1024/1024/1024求的GB值:
  1. @echo off
  2. for /f "tokens=*" %%a in ('wmic diskdrive get Model^,MediaType^,PNPDeviceID^,Size ^|find "External hard disk media"') do (
  3. echo %%a
  4. )
  5. pause
复制代码
获取到的信息:
External hard disk media  WINTOGO CHIPFANCIER SCSI Disk Device  SCSI\DISK&VEN_WINTOGO&PROD_CHIPFANCIER\6&DD32B3&1&000000         126693987840
请按任意键继续. . .

然后用下面代码取得硬盘容量,对比容量后(如果对比容量有误差,就做减法,差值小于20就当作是同一个设备)即可获取到对应盘符:
  1. @echo off
  2. for /f "tokens=*" %%a in ('echo list volume ^| diskpart ^|find/i "磁盘分区" ^| find /i "正常"') do echo %%a
  3. pause
复制代码
获取到的信息:
卷     1     D   工具           FAT32  磁盘分区         130 MB  正常
卷     2     C   系统           NTFS   磁盘分区          70 GB  正常         启动
卷     3     E   软件           NTFS   磁盘分区         153 GB  正常
卷     4         ESP_EFI      FAT32  磁盘分区          99 MB  正常         系统
卷     5     F   SLC          NTFS   磁盘分区         117 GB  正常
请按任意键继续. . .

TOP

回复 8# Batcher

用10楼的方法可以获取到对应值,但是存在获取容量在末尾的情况,平时使用也会遇到WMIC get取值,无法按照关键词顺序排序结果顺序,请问有什么讲究吗。
比如下面两个代码排序不同,取值却一样:
  1. @echo off
  2. for /f "tokens=*" %%a in ('wmic diskdrive get Size^,MediaType^,PNPDeviceID^,Model ^|find "External hard disk media"') do echo %%a
  3. echo ========================分割线==============================
  4. for /f "tokens=*" %%a in ('wmic diskdrive get Model^,MediaType^,PNPDeviceID^,Size ^|find "External hard disk media"') do echo %%a
  5. pause>nul
复制代码
取得结果:
External hard disk media  WINTOGO CHIPFANCIER SCSI Disk Device  SCSI\DISK&VEN_WINTOGO&PROD_CHIPFANCIER\6&DD32B3&1&000000         126693987840
========================分割线==============================
External hard disk media  WINTOGO CHIPFANCIER SCSI Disk Device  SCSI\DISK&VEN_WINTOGO&PROD_CHIPFANCIER\6&DD32B3&1&000000         126693987840

TOP

回复 12# Batcher


就是想把Size排序到第一个,这样就可以很方便的取值。

TOP

本帖最后由 yakeyun 于 2022-5-13 22:30 编辑

回复 1# 夜宵

看下是不是想要的结果:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=1,* delims=^=" %%a in ('wmic diskdrive where "MediaType='External hard disk media'" get Size /value ^|find /i "="') do (
  3. set Size=%%b
  4. for /f "tokens=1 delims=^." %%c in ('powershell -command " !Size! / 1024 / 1024 / 1024 "') do (
  5. set Size=%%c
  6. if defined Size (
  7. echo !Size!
  8. for /f "tokens=3" %%d in ('echo list volume ^| diskpart ^| find /i "!Size!"') do echo 获取到移动磁盘盘符是:%%d
  9. pause>nul
  10. )
  11. )
  12. )
  13. cls
  14. echo.
  15. echo 未发现可移动本地磁盘!
  16. echo.
  17. timeout -t 5 >nul
  18. exit
复制代码

TOP

返回列表