批处理文件 - 了解磁盘是否已分区

批处理文件 - 了解磁盘是否已分区

我在 Winpe 环境中工作,如何获取磁盘 0 是否已分区的信息,以便在每种情况下启动特定命令,我已经尝试过,但是如何让它在批处理文件中正常工作?

set part_inst=wmic partition list instance

如果磁盘未初始化它将返回:

No Available Instance.

否则,如果找到分区,它将返回:

Index
0
1
2

如何在批处理文件中使用此信息来启动如下过程

if %part_inst% == "No Available Instance." (
Rem execute sequence_1 of commands if disk is **_not partitioned_**
) else (
Rem execute sequence_2 of commands if disk is **_partitioned_**
)

答案1

扩展 Oliver Salzburg 的答案,这是一个在 Windows PE 中开箱即用的示例代码片段,find默认情况下只有命令可用。我还更改了实际变量检查,以使其尽可能独立于语言:

@echo off

set part_inst=

for /f "usebackq tokens=2 delims==" %%A in (
`wmic partition list instance /format:list ^| find "="`
) do set part_inst=%%A

if not defined part_inst (
REM execute sequence_1 of commands if disk is **_not partitioned_**
) else (
REM execute sequence_2 of commands if disk is **_partitioned_**
)

答案2

要将执行命令的结果存储到变量中,不能简单地使用 来分配它set

一种流行的方法是使用forStackOverflow 问题中概述的方法Windows 批处理文件:如何使用命令结果设置变量?

您可能需要结合以下建议如何从 wmic 输出中删除空行?

for /f "skip=1 delims=" %%a in (
  'wmic partition list instance' ^| findstr /r /v "^$"'
) do @set part_inst=%%a

相关内容