标题: [系统相关] [已解决]批处理如何获取指定盘符所在的硬盘信息 [打印本页]
作者: 小白龙 时间: 2023-8-27 12:22 标题: [已解决]批处理如何获取指定盘符所在的硬盘信息
我想获取D盘所在的磁盘信息, 用gpt写了下面的代码, 但是无效, 求路过大佬帮助, 多谢
因为我的电脑上有N块硬盘, 所以有时想用命令行查一下, 某个分区在哪个硬盘上, 想显示一下该硬盘的详细信息- wmic logicaldisk where DeviceID="D:" get caption, description, providername, volumesname
复制代码
作者: Five66 时间: 2023-8-27 13:13
试试分开来,或者用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
作者: 小白龙 时间: 2023-8-27 13:35
回复 2# Five66
感谢大佬, 都显示无效的查询,
不想用powershell
作者: 小白龙 时间: 2023-8-27 13:37
回复 2# Five66
我前面的描述有点笼统, 我是想获取分区所在的硬盘号, 因为我的硬盘是按主板上的接口的顺序插的
在磁盘管理里面, 第一个硬盘的硬盘号是 0 后面的类推+1
作者: 77七 时间: 2023-8-27 14:15
- @echo off
- rem http://www.bathome.net/redirect.php?goto=findpost&ptid=17241&pid=110200
- for /f tokens^=3delims^=^" %%a in ('wmic path Win32_LogicalDiskToPartition.Dependent^='Win32_LogicalDisk.DeviceID^="d:"' get Antecedent /value') do (
- for /f "tokens=2 delims=#," %%b in ("%%a") do (
- echo %%b
- )
- )
- pause
复制代码
作者: 小白龙 时间: 2023-8-27 18:12
本帖最后由 小白龙 于 2023-8-27 18:14 编辑
回复 5# 77七
感谢大佬帮忙!
想继续请教, 如果不是通过盘符, 而是通过卷标来获取呢? 代码有些复杂看不太懂
估计可能是改下面, =号后面应该改成卷标, 那=前面改成什么呢, 例如: ????="soft"
DeviceID^="d:"
作者: 77七 时间: 2023-8-27 18:37
回复 6# 小白龙
我不会修改,rem 后有原帖地址。
由卷标获取磁盘 参考- http://www.bathome.net/redirect.php?goto=findpost&;ptid=59390&pid=242338
复制代码
作者: idwma 时间: 2023-8-27 19:39
试试先通过卷标得到盘符
作者: Five66 时间: 2023-8-27 20:32
本帖最后由 Five66 于 2023-8-27 20:38 编辑
大概是这样子吧,label是卷标- set lb=label
- for /f "tokens=1" %%i in ('wmic logicaldisk get deviceid^,volumename^|findstr /i %lb%') do set "lb=%%i"
- for /f tokens^=2delims^=^" %%a in ('wmic path Win32_LogicalDiskToPartition^|findstr /i %lb%') do set "lb=%%a"
- for /f "tokens=2 delims=#," %%b in ("%lb%") do echo %%b
复制代码
作者: 小白龙 时间: 2023-8-27 21:08
回复 9# Five66
感谢帮忙, 总感觉可以像5楼那样, 一行就可以查询出来, 查了一些资料, wmic也是一门查询语言
作者: Five66 时间: 2023-8-27 21:22
回复 10# 小白龙
Win32_LogicalDiskToPartition貌似只有
Antecedent
Dependent
EndingAddress
StartingAddress
这四个属性,好像没有跟卷标相关的
作者: idwma 时间: 2023-8-27 22:38
本帖最后由 idwma 于 2023-8-27 22:43 编辑
非要一行应该也可以- 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
作者: 小白龙 时间: 2023-8-27 23:25
回复 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
作者: Nsqs 时间: 2023-8-28 00:26
本帖最后由 Nsqs 于 2023-8-28 00:59 编辑
全部- @echo off
- powershell -noprofile -executionpolicy bypass "gwmi Win32_LogicalDiskToPartition|select Antecedent,Dependent|%%{$x=$_.Dependent -replace '.+(?:=)|\"';\"$x, $($_.Antecedent -replace '(?:.+=)|\"')\"}"
- pause
复制代码
指定盘符- @echo off
- powershell -noprofile -executionpolicy bypass "(gwmi Win32_LogicalDiskToPartition|?{$_.Dependent -match 'd:'}).Antecedent -replace '(?:.+=)|\"'"
- pause
复制代码
作者: Five66 时间: 2023-8-28 00:29
在12楼代码在后面加上findstr寻找就行了,连for都不用了- wmic logicaldisk where "VolumeName='soft'" assoc:value /RESULTCLASS:Win32_DiskPartition |findstr /i "diskindex"
复制代码
作者: aloha20200628 时间: 2023-8-28 12:10
试试这个 for/f 一行流的结果...- @echo off
- for /f tokens^=2^ delims^=^" %%2 in ('wmic logicaldisk where DeviceID^=^"d:^" assoc /assocclass:Win32_LogicalDiskToPartition') do set "v=%%2"
- echo,DeviceID = %v%
复制代码
作者: Batcher 时间: 2023-8-31 17:49
test-1.bat- @echo off
- REM 设置待查看的盘符
- set "MyLetter=C:"
- for /f "tokens=1-2 delims==" %%a in ('wmic LogicalDisk where "DeviceID='%MyLetter%'" assoc:value /resultclass:Win32_DiskPartition ^| findstr /b /c:"DiskIndex=" /c:"Index="') do (
- for /f "delims=" %%i in ("%%b") do (
- if "%%a" equ "DiskIndex" (
- set "LD2DI=%%i"
- ) else if "%%a" equ "Index" (
- set "LD2I=%%i"
- )
- )
- )
- echo Disk #%LD2DI%, Partition #%LD2I%
- pause
复制代码
test-2.bat- @echo off
- REM 设置待查看的盘符
- set "MyLetter=C:"
- for /f "tokens=3 delims==" %%a in ('wmic path Win32_LogicalDiskToPartition.Dependent^="Win32_LogicalDisk.DeviceID='%MyLetter%'" get Antecedent /value') do (
- set "DeviceID=%%a"
- )
- set "LD2Position=%DeviceID:~1,-3%"
- echo,%LD2Position%
- pause
复制代码
test-3.bat- @echo off
- REM 查看系统盘符所在的硬盘和分区
- set "MyLetter=%SystemDrive%"
- for /f "tokens=3 delims==" %%a in ('wmic path Win32_LogicalDiskToPartition.Dependent^="Win32_LogicalDisk.DeviceID='%MyLetter%'" get Antecedent /value') do (
- set "DeviceID=%%a"
- )
- set "LD2Position=%DeviceID:~1,-3%"
- echo,%LD2Position%
- pause
复制代码
test-4.bat- @echo off
- REM 查看系统盘符所在的硬盘和分区
- for /f "tokens=2 delims==" %%i in ('wmic Partition where "BootPartition='true'" get DeviceID /value ^| find "="') do (
- for %%j in ("%%i") do (
- set "LD2Position=%%~j"
- )
- )
- echo,%LD2Position%
- pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |