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

[系统相关] [已解决]批处理如何获取指定盘符所在的硬盘信息

我想获取D盘所在的磁盘信息, 用gpt写了下面的代码, 但是无效, 求路过大佬帮助, 多谢

因为我的电脑上有N块硬盘, 所以有时想用命令行查一下, 某个分区在哪个硬盘上, 想显示一下该硬盘的详细信息
  1. wmic logicaldisk where DeviceID="D:" get caption, description, providername, volumesname
复制代码
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

试试分开来,或者用powershel或其他方法
wmic logicaldisk where DeviceID="D:" get caption
wmic logicaldisk where DeviceID="D:" get description
wmic logicaldisk where DeviceID="D:" get providername
wmic logicaldisk where DeviceID="D:" get volumesname

TOP

回复 2# Five66


感谢大佬, 都显示无效的查询,
不想用powershell

TOP

回复 2# Five66


    我前面的描述有点笼统, 我是想获取分区所在的硬盘号, 因为我的硬盘是按主板上的接口的顺序插的
在磁盘管理里面, 第一个硬盘的硬盘号是 0 后面的类推+1

TOP

  1. @echo off
  2. rem http://www.bathome.net/redirect.php?goto=findpost&ptid=17241&pid=110200
  3. for /f tokens^=3delims^=^" %%a in ('wmic path Win32_LogicalDiskToPartition.Dependent^='Win32_LogicalDisk.DeviceID^="d:"' get Antecedent /value') do (
  4. for /f "tokens=2 delims=#," %%b in ("%%a") do (
  5. echo %%b
  6. )
  7. )
  8. pause
复制代码
1

评分人数

bat小白,请多指教!谢谢!

TOP

本帖最后由 小白龙 于 2023-8-27 18:14 编辑

回复 5# 77七


  感谢大佬帮忙!

想继续请教, 如果不是通过盘符, 而是通过卷标来获取呢? 代码有些复杂看不太懂

估计可能是改下面, =号后面应该改成卷标, 那=前面改成什么呢, 例如: ????="soft"
DeviceID^="d:"

TOP

回复 6# 小白龙


   我不会修改,rem 后有原帖地址。
由卷标获取磁盘 参考
  1. http://www.bathome.net/redirect.php?goto=findpost&;ptid=59390&pid=242338
复制代码
bat小白,请多指教!谢谢!

TOP

试试先通过卷标得到盘符

TOP

本帖最后由 Five66 于 2023-8-27 20:38 编辑

大概是这样子吧,label是卷标
  1. set lb=label
  2. for /f "tokens=1" %%i in ('wmic logicaldisk get deviceid^,volumename^|findstr /i %lb%') do set "lb=%%i"
  3. for /f tokens^=2delims^=^" %%a in ('wmic path Win32_LogicalDiskToPartition^|findstr /i %lb%') do set "lb=%%a"
  4. for /f "tokens=2 delims=#," %%b in ("%lb%") do echo %%b
复制代码

TOP

回复 9# Five66


    感谢帮忙, 总感觉可以像5楼那样, 一行就可以查询出来, 查了一些资料, wmic也是一门查询语言

TOP

回复 10# 小白龙

Win32_LogicalDiskToPartition貌似只有
Antecedent
Dependent
EndingAddress
StartingAddress
这四个属性,好像没有跟卷标相关的

TOP

本帖最后由 idwma 于 2023-8-27 22:43 编辑

非要一行应该也可以
  1. wmic logicaldisk where "VolumeName='soft'" assoc:value /RESULTCLASS:Win32_DiskPartition
复制代码
官方的帮助参考一下
learn.microsoft.com/zh-cn/windows/win32/wmisdk/wmic#assoc
learn.microsoft.com/zh-cn/windows/win32/wmisdk/associators-of-statement
1

评分人数

TOP

回复 12# idwma


    多谢大佬,
执行后出来很多行, 怎样只显示红色这行?


__PATH=\\WIN7\ROOT\CIMV2:Win32_LogicalDisk.DeviceID="C:"


__PATH=\\WIN7\ROOT\CIMV2:Win32_DiskPartition.DeviceID="Disk #0, Partition #1"
__NAMESPACE=ROOT\CIMV2
__SERVER=WIN7
__DERIVATION={"CIM_DiskPartition","CIM_StorageExtent","CIM_LogicalDevice","CIM_LogicalElement","CIM_ManagedSystemElement
"}
__PROPERTY_COUNT=34
__RELPATH=Win32_DiskPartition.DeviceID="Disk #0, Partition #1"
__DYNASTY=CIM_ManagedSystemElement
__SUPERCLASS=CIM_DiskPartition
__CLASS=Win32_DiskPartition
__GENUS=2
Access=
Availability=
BlockSize=512
Bootable=FALSE
BootPartition=FALSE
Caption=Disk #0, Partition #1
ConfigManagerErrorCode=
ConfigManagerUserConfig=
CreationClassName=Win32_DiskPartition
Description=GPT: Basic Data
DeviceID=Disk #0, Partition #1
DiskIndex=0
ErrorCleared=
ErrorDescription=
ErrorMethodology=
HiddenSectors=
Index=1
InstallDate=
LastErrorCode=
Name=Disk #0, Partition #1
NumberOfBlocks=167776256
PNPDeviceID=
PowerManagementCapabilities=
PowerManagementSupported=
PrimaryPartition=TRUE
Purpose=
RewritePartition=
Size=85901443072
StartingOffset=1077936128
Status=
StatusInfo=
SystemCreationClassName=Win32_ComputerSystem
SystemName=WIN7
Type=GPT: Basic Data

TOP

本帖最后由 Nsqs 于 2023-8-28 00:59 编辑

全部
  1. @echo off
  2. powershell -noprofile -executionpolicy bypass "gwmi Win32_LogicalDiskToPartition|select Antecedent,Dependent|%%{$x=$_.Dependent -replace '.+(?:=)|\"';\"$x, $($_.Antecedent -replace '(?:.+=)|\"')\"}"
  3. pause
复制代码
指定盘符
  1. @echo off
  2. powershell -noprofile -executionpolicy bypass "(gwmi Win32_LogicalDiskToPartition|?{$_.Dependent -match 'd:'}).Antecedent -replace '(?:.+=)|\"'"
  3. pause
复制代码

TOP

在12楼代码在后面加上findstr寻找就行了,连for都不用了
  1. wmic logicaldisk where "VolumeName='soft'" assoc:value /RESULTCLASS:Win32_DiskPartition |findstr /i "diskindex"
复制代码
1

评分人数

TOP

返回列表