标题: [系统相关] [已解决]批处理,如何显示系统启动方式(bios或uefi)和硬盘格式(mbr或gpt)? [打印本页]
作者: ygqiang 时间: 2024-5-24 09:30 标题: [已解决]批处理,如何显示系统启动方式(bios或uefi)和硬盘格式(mbr或gpt)?
本帖最后由 ygqiang 于 2024-5-25 07:17 编辑
[已解决]批处理,如何显示当前系统启动方式(bios或uefi)和多个硬盘格式(mbr或gpt)?
下面的代码,基本满足要求。主要问题是不能显示多个硬盘格式。- @fltmc>nul||mshta vbscript:CreateObject("Shell.Application").ShellExecute("%~dpnx0","%*",,"runas",1)(window.close)&&exit
- @echo off
- cd /d "%~dp0"
- cls
- bcdedit /enum {current} | find /i "winload.efi" && cls && (
- echo --------当前引导方式:UEFI
- ) || (
- echo --------当前引导方式:Legacy
- )
-
-
- @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"
- )
- )
- )
-
- for /f "delims=" %%i in ('wmic Partition where "DiskIndex='%LD2DI%' and Index='%LD2I%'" get type /value ^| find "="') do (
- echo,%%i | find "GPT" >nul
- if errorlevel 1 (
- echo ------------硬盘格式::MBR
- ) else (
- echo ------------硬盘格式::GPT
- )
- )
- 1pause >nul 2>nul
-
- ping 0 -n 4 >nul 2>nul
复制代码
作者: ygqiang 时间: 2024-5-24 09:37
本帖最后由 ygqiang 于 2024-5-24 12:32 编辑
备用备用。。。
作者: ygqiang 时间: 2024-5-24 10:02
本帖最后由 ygqiang 于 2024-5-24 10:13 编辑
msinfo32 /report a.txt
这个命令运行后,txt文件里可以显示系统引导方式。
BIOS 模式 UEFI
作者: newswan 时间: 2024-5-24 21:10
powersehll- ( get-disk ).PartitionStyle
- $env:Firmware_Type
复制代码
作者: ShowCode 时间: 2024-5-24 22:30
回复 1# ygqiang
V1.bat- @echo off
- powershell –NoProfile –ExecutionPolicy Bypass "$env:Firmware_Type; (Get-Disk).PartitionStyle"
- pause
复制代码
作者: ygqiang 时间: 2024-5-25 06:49
本帖最后由 ygqiang 于 2024-5-25 07:36 编辑
回复 5# ShowCode
多谢。磁盘信息能否显示:
哪个硬盘?多大容量?什么格式(mbr或gpt)?
跟磁盘管理里面显示的一致,比如磁盘0、磁盘1
举例如下:
磁盘0,容量1T,MBR
磁盘1,容量512G,GPT
1楼代码,win7系统和win11系统均测试通过。
下面代码,win11系统测试通过,win7 64系统下测试不行,运行提示错误。- @echo off
- echo ------------当前引导方式:
- powershell –NoProfile –ExecutionPolicy Bypass "$env:Firmware_Type"
-
- echo.
- echo.
- echo ------------硬盘格式:
- powershell –NoProfile –ExecutionPolicy Bypass "Get-Disk"
-
- pause >nul
- exit
复制代码
作者: newswan 时间: 2024-5-25 10:28
举例如下:
磁盘0,容量1T,MBR
磁盘1,容量512G,GPT
磁盘0 物理盘?
一楼的代码 磁盘C,是逻辑盘
作者: Batcher 时间: 2024-5-25 10:36
回复 6# ygqiang
http://bbs.bathome.net/thread-33606-2-1.html#pid160255
这个代码跟你最新的需求有什么差异吗
作者: ygqiang 时间: 2024-5-25 15:22
回复 8# Batcher
硬盘-格式及分区检测DynamicScript-修正版,这个代码,测试结果全是GPT格式。
win11系统下,实际情况是:
磁盘0,容量1T,MBR
磁盘1,容量512G,GPT
作者: ygqiang 时间: 2024-5-25 15:23
回复 7# newswan
对啊,都是物理盘。
diskpart list disk,显示的结果。
磁盘0
磁盘1
磁盘2
...
作者: newswan 时间: 2024-5-25 15:40
批处理,wmic 的话- @echo off
- setlocal ENABLEDELAYEDEXPANSION
-
- for /f "usebackq tokens=1,2 delims==" %%a in (` "wmic DISKDRIVE get Index,size /value"`) do (
- if "%%a" == "Index" (
- call set _Disk_ID_=%%b
- for /f "usebackq tokens=1,2 delims==" %%c in (` "wmic partition where DiskIndex=!_Disk_ID_! get Type /value"`) do (
- if "%%c" == "Type" (
- for /f "tokens=1 delims=:" %%e in ( "%%d" ) do (
- if "%%e" == "GPT" (set _Disk_!_Disk_ID_!_Type_=%%e) else (set _Disk_!_Disk_ID_!_Type_=MBR)
- )
- )
- )
- )
- if "%%a" == "Size" (
- call set _Disk_!_Disk_ID_!_Size_=%%b
- )
- )
-
- set _
-
-
- pause
- exit/b
复制代码
作者: ygqiang 时间: 2024-5-25 23:40
回复 11# newswan
显示结果,是否可以规整一些?谢谢
作者: newswan 时间: 2024-5-26 07:30
- @echo off
- setlocal ENABLEDELAYEDEXPANSION
-
- for /f "usebackq tokens=1,2 delims==" %%a in (` "wmic DISKDRIVE get Index,size /value"`) do (
- if "%%a" == "Index" (
- call set _Disk_List_=!_Disk_List_! %%b
- call set _Disk_ID_=%%b
- for /f "usebackq tokens=1,2 delims==" %%c in (` "wmic partition where DiskIndex=!_Disk_ID_! get Type /value"`) do (
- if "%%c" == "Type" (
- for /f "tokens=1 delims=:" %%e in ( "%%d" ) do (
- if "%%e" == "GPT" (set _Disk_!_Disk_ID_!_Type_=%%e) else (set _Disk_!_Disk_ID_!_Type_=MBR)
- )
- )
- )
- )
- if "%%a" == "Size" (
- call set _Disk_!_Disk_ID_!_Size_=%%b
- )
- )
-
- for %%a in (%_Disk_List_%) do (
- echo diskID:%%a Type:!_Disk_%%a_Type_! Size:!_Disk_%%a_Size_!
- )
复制代码
作者: ygqiang 时间: 2024-5-26 15:07
- @fltmc>nul||mshta vbscript:CreateObject("Shell.Application").ShellExecute("%~dpnx0","%*",,"runas",1)(window.close)&&exit
- @echo off
- cd /d "%~dp0"
- cls
-
- bcdedit /enum {current} | find /i "winload.efi" && cls && echo. && echo. && (
- echo --------当前引导方式:UEFI
- ) || (
- echo --------当前引导方式:Legacy bios
- )
-
-
- @echo off
- echo.
- for /f "tokens=1,2,* delims= " %%a in ('echo list disk^|diskpart^|find /i "B"') do (
- (echo,%%c|find /i "*" >nul 2>nul) && echo. && (
- echo %%a %%b 格式::GPT
- ) || (
- echo %%a %%b 格式::mbr
- )
- )
-
- pause >nul
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |