[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in ('^(echo list disk ^)^|diskpart^|find "联机"') do set/a n+=1
set/a n=!n!-1
for /l %%i in (0,1,!n!) do (
for %%a in (Win soft data) do (
(echo select disk %%i &echo detail disk)|diskpart|find "%%a">nul && echo %%a在硬盘:%%i
)
)
pause

TOP

回复 10# 5i365


    如果卷标中间有空格显示会不准确
ansi编码
  1. @echo off & cd /d "%~dp0"
  2. %1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","REM",,"runas",1)(window.close)&exit
  3. setlocal enabledelayedexpansion
  4. set "labs=Win10|Backup"
  5. set "num=1"
  6. for /l %%i in (0,1,10) do (
  7. for /f "tokens=2,3,4,5,7,8" %%a in ('(echo select disk %%i ^& echo detail disk ^) ^| diskpart ^| findstr /i "%labs:|= %"') do (
  8. set "disk_!num!=%%i"
  9. set "part_!num!=%%a"
  10. set "letter_!num!=%%b"
  11. set "lab_!num!=%%c"
  12. set "fs_!num!=%%d"
  13. set "size_!num!=%%e%%f"
  14. set /a "num+=1"
  15. )
  16. )
  17. set /a "num-=1"
  18. for /l %%i in (1,1,%num%) do (
  19. echo 硬盘号: !disk_%%i! 分区号: !part_%%i! 盘符: !letter_%%i! 卷标:!lab_%%i! 类型:!fs_%%i! 大小:!size_%%i!
  20. )
  21. pause&exit
复制代码

TOP

回复 17# went


    多个卷标使用|分隔,如
  1. set "labs=Win10|Backup|Sortware|Games"
复制代码

TOP

回复 17# went
再次感谢大侠支招, 分别在Win下和PE下测试了一下, 结果如下:

Win下会有计算机名显示在除第二行和第三行的分区号后面:

硬盘号: 0       分区号: WIN7    盘符:  卷标:    类型:   大小:
硬盘号: 0       分区号: 0       盘符: C 卷标:Win        类型:NTFS       大小:80GB
硬盘号: 0       分区号: 1       盘符: D 卷标:soft       类型:NTFS       大小:112GB
硬盘号: 1       分区号: WIN7    盘符:  卷标:    类型:   大小:
硬盘号: 2       分区号: WIN7    盘符:  卷标:    类型:   大小:
硬盘号: 3       分区号: WIN7    盘符:  卷标:    类型:   大小:
硬盘号: 4       分区号: WIN7    盘符:  卷标:    类型:   大小:
硬盘号: 5       分区号: WIN7    盘符:  卷标:    类型:   大小:
硬盘号: 6       分区号: WIN7    盘符:  卷标:    类型:   大小:
硬盘号: 7       分区号: WIN7    盘符:  卷标:    类型:   大小:
硬盘号: 8       分区号: WIN7    盘符:  卷标:    类型:   大小:
硬盘号: 9       分区号: WIN7    盘符:  卷标:    类型:   大小:
硬盘号: 10      分区号: WIN7    盘符:  卷标:    类型:   大小:
请按任意键继续. . .

PE下会有硬盘型号显示在第一行的分区号后面:

硬盘号: 0       分区号: SP550   盘符:  卷标:    类型:   大小:
硬盘号: 0       分区号: 0       盘符: D 卷标:Win        类型:NTFS       大小:80GB
硬盘号: 0       分区号: 1       盘符: C 卷标:soft       类型:NTFS       大小:112GB
请按任意键继续. . .

另外,请教大侠, 如果在后续的代码里使用各自的变量呢?
例如,要在代码中搜索的是卷标是 win 和 soft ,各自的硬盘号, 分区号, 盘符变量名分别为
%win_yph%  %win_fqh%  %win_pf%
%soft_yph%  %soft_fqh%  %soft_pf%

后面代码中要用到它们,如:

if %win_fqh%=="2"
if %soft_yqh%=="1"
if %soft_pf%=="C:"

TOP

照下面代码取变量
  1. @echo off & cd /d "%~dp0"
  2. %1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","REM",,"runas",1)(window.close)&exit
  3. set "labs=Win10|Backup|Software|Games"
  4. for /l %%i in (0,1,10) do (
  5. for /f "tokens=2,3,4,5,7,8" %%a in ('(echo select disk %%i ^& echo detail disk ^) ^| diskpart ^| findstr /i "%labs:|= %"') do (
  6. set "%%c_yph=%%i"
  7. set "%%c_fqh=%%a"
  8. set "%%c_pf=%%b"
  9. set "%%c_lab=%%c"
  10. set "%%c_fs=%%d"
  11. set "%%c_size=%%e%%f"
  12. )
  13. )
  14. REM 获取卷标为Win10的相关信息
  15. echo 硬盘号: %Win10_yph% 分区号: %Win10_fqh% 盘符: %Win10_pf% 卷标: %Win10_lab% 类型:%Win10_fs% 大小:%Win10_size%
  16. REM 获取卷标为Backup的相关信息
  17. echo 硬盘号: %Backup_yph% 分区号: %Backup_fqh% 盘符: %Backup_pf% 卷标: %Backup_lab% 类型:%Backup_fs% 大小:%Backup_size%
  18. pause&exit
复制代码
回复 19# 5i365
1

评分人数

TOP

回复 20# went

你好, 刚刚试了一下, 上面的代码,执行后,结果是空的:

硬盘号:         分区号:         盘符:  卷标:            类型:   大小:
硬盘号:         分区号:         盘符:  卷标:            类型:   大小:
请按任意键继续. . .

TOP

回复 21# 5i365


    labs改了吗

TOP

回复 22# went

我真是笨到家了, 忘改了,

刚试了一下, 完美执行, 代码小巧, 牛X

TOP

回复 20# went


    你好, 分区号,应该以list part里面的号为准, 从1开始的, 例如下面的操作步骤, 卷标为Win10的分区其分区号应该是1,而不是0,如何修改? 感谢:


Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

C:\Users\Administrator>diskpart

Microsoft DiskPart 版本 6.1.7601
Copyright (C) 1999-2008 Microsoft Corporation.
在计算机上: WIN7

DISKPART> sel disk 0

磁盘 0 现在是所选磁盘。

DISKPART> detail disk

Apacer  AS340 240GB ATA Device
磁盘 ID: {DA5845C4-638E-454A-B89D-3B786EEC8A1A}
类型   : SATA
状态 : 联机
路径   : 0
目标 : 0
LUN ID : 0
位置路径 : PCIROOT(0)#PCI(1F02)#ATA(C00T00L00)
当前只读状态: 否
只读: 否
启动磁盘: 是
页面文件磁盘: 是
休眠文件磁盘: 否
故障转储磁盘: 是
群集磁盘  : 否

  卷 ###      LTR  标签         FS     类型        大小     状态       信息
  ----------  ---  -----------  -----  ----------  -------  ---------  --------
  卷     0     C   win10        NTFS   磁盘分区          80 GB  正常         启动
  卷     1     D   DATA         NTFS   磁盘分区         112 GB  正常
  卷     2         W10          NTFS   磁盘分区          29 GB  正常
  卷     3         EFI          FAT32  磁盘分区        1027 MB  正常         系统

DISKPART> list part

  分区 ###       类型              大小     偏移量
  -------------  ----------------  -------  -------
  分区      1    系统                1027 MB  1024 KB
  分区      2    主要                  80 GB  1028 MB
  分区      3    主要                 112 GB    81 GB
  分区      4    主要                  29 GB   193 GB

DISKPART>

TOP

返回列表