找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 7448|回复: 8

[系统相关] [已解决]bat命令,如何判断哪个磁盘,哪个分区,是当前win系统启动盘?

[复制链接]
发表于 2025-3-26 10:50:04 | 显示全部楼层 |阅读模式
本帖最后由 ygqiang 于 2025-4-11 08:51 编辑

bat命令,如何判断哪个磁盘,哪个分区,是当前win系统启动盘?
win系统下,计算机管理,磁盘管理,这里显示的磁盘号。

[已解决]
代码如下:
  1. @echo off & setlocal enabledelayedexpansion
  2. echo 代码开始

  3. :star
  4. cls

  5. echo.
  6. echo.
  7. echo ------------------当前系统-启动磁盘-启动分区------------------1111

  8. for /f "delims=" %%a in (
  9.   'powershell "gwmi -computername '.' -namespace 'root\cimv2' -class 'win32_logicaldisktopartition'|%%{$ld=$_.__RELPATH.substring($_.__RELPATH.length-5,2);if($ld -eq '%systemDrive%'){$_.__RELPATH -replace '.*disk #(\d+),.*', '$1'}}" '
  10. ) do echo,启动磁盘----磁盘%%a&echo,启动分区----%systemDrive%
  11. echo,

  12. echo ------------------当前系统-启动磁盘-启动分区------------------2222
  13. for /l %%i in (0,1,25) do (
  14.   for /f "tokens=3 delims= " %%a in (
  15.     '(echo,select disk %%i ^&echo,detail disk^)^|diskpart^|findstr /rc:" 卷[ ]*[0-9]" '
  16.   ) do if /i "%%a:"=="%SystemDrive%" echo,启动磁盘----磁盘%%i&echo,启动分区----%systemDrive%&goto[end])
  17. :[end]
  18. echo,&echo,


  19. ping 0 -n 16 >nul 2>nul
  20. goto :star
复制代码
发表于 2025-3-26 11:45:17 | 显示全部楼层
回复 1# ygqiang

参考此帖 8 楼》http://www.bathome.net/thread-70700-1-1.html
 楼主| 发表于 2025-3-26 14:01:04 | 显示全部楼层
回复 2# aloha20200628


    多谢,最好用bat或者diskpart就能获取到。
 楼主| 发表于 2025-4-9 18:49:32 | 显示全部楼层
顶。。。。
发表于 2025-4-9 20:39:29 | 显示全部楼层
回复 1# ygqiang

  1. @echo off &for /f "tokens=2 delims=#," %%x in (
  2.    ' "wmic logicaldisk where DeviceID='%systemDrive%' assoc /assocclass:Win32_LogicalDiskToPartition" '
  3. ) do echo,系统启动盘符 %systemDrive% = 物理盘号 %%x
  4. pause&exit/b
复制代码
 楼主| 发表于 2025-4-9 20:59:33 | 显示全部楼层
回复 5# aloha20200628


    谢谢,除了wmic命令,有没有别的方法?
win11系统,新版本都不内置wmic了
发表于 2025-4-10 14:02:58 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-4-10 20:11 编辑

回复 3# ygqiang

以下代码存为 test.bat 运行,须先获得管理员权限,在其新窗口中启运 diskpart.exe 析取系统启动盘符与所对应的物理盘号,首次启运 diskpart.exe 须等候当前所有外接驱动器热连接,其运行效率明显低于5楼和8楼代码...

  1. @echo off
  2. %~1 powershell "start -file '%~f0' -arg '::' -verb runas" &exit/b
  3. for /l %%i in (0,1,25) do (
  4.   for /f "tokens=3 delims= " %%a in (
  5.     '(echo,select disk %%i ^&echo,detail disk^)^|diskpart^|findstr /rc:" 卷[ ]*[0-9]" '
  6.   ) do if /i "%%a:"=="%SystemDrive%" echo,系统启动盘符 %systemDrive% = 物理盘号 %%i &goto[end])
  7. :[end]
  8. pause&exit/b
复制代码
发表于 2025-4-10 20:08:34 | 显示全部楼层
回复 6# ygqiang

再给一个 bat+powershell 版本(存为 test.bat 运行),不必获取管理员权限,也无须等候当前所有外接硬盘完成热连接,效率明显高于 diskpart 版...

  1. @echo off &for /f "delims=" %%a in (
  2.   'powershell "gwmi -computername '.' -namespace 'root\cimv2' -class 'win32_logicaldisktopartition'|%%{$ld=$_.__RELPATH.substring($_.__RELPATH.length-5,2);if($ld -eq '%systemDrive%'){$_.__RELPATH -replace '.*disk #(\d+),.*', '$1'}}" '
  3. ) do echo,系统启动盘符 %systemDrive% = 物理盘号 %%a
  4. pause&exit/b
复制代码
发表于 2025-4-11 19:24:01 | 显示全部楼层
回复 1# ygqiang

再打磨一下8楼代码,句式还可更简洁,如下...

  1. @echo off &for /f "delims=" %%a in (
  2.    'powershell "gwmi win32_logicaldisktopartition|%%{$ld=$_.dependent.substring($_.dependent.length-3,2);if($ld -eq '%systemDrive%'){$_.antecedent -replace '.*Disk #(\d+).*', '$1'}}" ') do echo,系统启动盘符 %systemDrive% = 物理盘号 %%a
  3. pause&exit/b
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 07:24 , Processed in 0.019351 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表