标题: [文件操作] 【已解决】如何判定当前系统所在分区是GPT分区还是MBR分区 [打印本页]
作者: 电动小马达 时间: 2020-1-26 18:33 标题: 【已解决】如何判定当前系统所在分区是GPT分区还是MBR分区
本帖最后由 电动小马达 于 2020-1-30 16:11 编辑
我的思路大概是这样,不过限于水平有限,不能写成bat文件,希望大佬们帮帮忙
1.判定%systemdrive%分区盘符,这个可以通过%systemdrive%直接获得,例如C。
2.通过diskpart命令-list vol获得C盘所在的卷标,并选定- DISKPART> list vol
-
- 卷 ### LTR 标签 FS 类型 大小 状态 信息
- ---------- --- ----------- ----- ---------- ------- --------- --------
- 卷 0 Files NTFS 磁盘分区 200 MB 正常
- 卷 1 E Work_M NTFS 磁盘分区 30 GB 正常
- 卷 2 D Files_M NTFS 磁盘分区 168 GB 正常 页面文件
- 卷 3 H Win7 NTFS 磁盘分区 39 GB 正常
- 卷 4 C Windows_OS NTFS 磁盘分区 85 GB 正常 启动
- 卷 5 F VHD & Syste NTFS 磁盘分区 110 GB 正常
- 卷 6 G 新加卷 NTFS 磁盘分区 39 GB 正常
- 卷 7 Win7 FAT32 磁盘分区 369 MB 正常
- 卷 8 PE FAT32 磁盘分区 2510 MB 正常
- 卷 9 Win10 FAT32 磁盘分区 300 MB 正常 系统
-
- DISKPART> sel vol 4
-
- 卷 4 是所选卷。
复制代码
3.通过UNIQUEID DISK命令是GPT分区还是MBR分区,- DISKPART> UNIQUEID DISK
-
- 磁盘 ID: {EB821A68-5E27-43D8-B993-C5167ECA28F2}
复制代码
GPT分区会显示类似于以下内容- 磁盘 ID: {EB821A68-5E27-43D8-B993-C5167ECA28F2}
复制代码
MBR分区会显示类似于以下内容复制代码
4.如果是GPT分区则echo GPT,如果是MBR分区则echo MBR并运行%systemdrive%\oem\1.exe
作者: went 时间: 2020-1-26 23:16
本帖最后由 went 于 2020-1-26 23:20 编辑
- @echo off
- powershell -c "(Get-Disk -Partition (Get-Partition -DriveLetter $env:SystemDrive.Substring(0,1))).PartitionStyle"
- pause
复制代码
电脑上要有powershell,保存为bat文件运行
作者: 电动小马达 时间: 2020-1-27 01:04
回复 2# went
win10下没问题,但是需要执行的电脑是win7,执行后显示为- 无法将“Get-Disk”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称
- 的拼写,如果包括路径,请确保路径正确,然后重试。
- 所在位置 行:1 字符: 10
- + (Get-Disk <<<< -Partition (Get-Partition -DriveLetter $env:SystemDrive.Subst
- ring(0,1))).PartitionStyle
- + CategoryInfo : ObjectNotFound: (Get-Disk:String) [], CommandNot
- FoundException
- + FullyQualifiedErrorId : CommandNotFoundException
-
- 请按任意键继续. . .
复制代码
作者: flashercs 时间: 2020-1-27 14:23
- wmic path win32_logicaldisk where "deviceid='c:'" assoc:list /resultclass:win32_diskpartition|find /i "Type=GPT"&&echo GPT||echo MBR
复制代码
作者: /zhqsystem/zhq 时间: 2020-1-28 04:51
- @Echo Off&Color 0e
- cd/d %~dp0
- call:Diskpart_List_Disk
- pause
- goto:eof
- :Diskpart_List_Disk
- Reg.exe Query "HKU\S-1-5-19" >nul 2>nul||exit
- if not %ErrorLevel% equ 0 exit
- set "#Grant_Administrators_F$=%SystemRoot%\System32\zh-CN\Diskpart.exe.mui"
- If Exist "%#Grant_Administrators_F$%" >nul 2>nul Takeown.exe /f "%#Grant_Administrators_F$%"
- If Exist "%#Grant_Administrators_F$%" >nul 2>nul Icacls.exe "%#Grant_Administrators_F$%" /Grant Administrators:f")
- If Exist "%#Grant_Administrators_F$%" >nul 2>nul ren "%#Grant_Administrators_F$%" "Diskpart.exe.mui.bak"
- >nul 2>nul set #Diskpart_Volume$
- if %ErrorLevel% Geq 2 for /f "delims==" %%i in ('"set #Diskpart_Volume$"')do set "%%i="
- for /f "skip=8 eol=D tokens=* delims=" %%i in ('"(echo,List Disk)|Diskpart.exe"')do for /f "tokens=1,2,3,4,5,6,7,8 delims= " %%s in ("%%i")do for /f "skip=27 eol=D tokens=1,2,3,* delims= " %%i in ('"(echo,select disk %%t&echo,DetAil disk)|Diskpart.exe"')do if /i "%%t%%z"=="%%t" (set "#Diskpart_Volume_%%k$=%%k;%%t;MBR")else (set "#Diskpart_Volume_%%k$=%%k;%%t;GPT")
- for /f "skip=8 eol=D tokens=* delims=" %%i in ('"(echo,List Disk)|Diskpart.exe"')do for /f "tokens=1,2,3,4,5,6,7,8 delims= " %%s in ("%%i")do for /f "skip=8 eol=D tokens=* delims=" %%i in ('"(echo,select disk %%t&echo,DetAil disk)|Diskpart.exe"')do if not defined #Diskpart_Disk_%%t$ set "#Diskpart_Disk_%%t$=%%t;%%i"
- set "#Diskpart_Volume_
- set "#Diskpart_Disk_
- If Exist "%#Grant_Administrators_F$%.bak" >nul 2>nul ren "%SystemRoot%\System32\zh-CN\Diskpart.exe.mui.bak" "Diskpart.exe.mui"
- set "#Error_Diskpart_Volume$="&&set "#Error_Diskpart_Disk$="
- >nul 2>nul set #Diskpart_Volume_
- if %ErrorLevel% equ 0 set "#Error_Diskpart_Volume$=1"
- >nul 2>nul set #Diskpart_Disk_
- if %ErrorLevel% equ 0 set "#Error_Diskpart_Disk$=1"
- goto:eof
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |