我在 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
。
一种流行的方法是使用for
StackOverflow 问题中概述的方法Windows 批处理文件:如何使用命令结果设置变量?。
您可能需要结合以下建议如何从 wmic 输出中删除空行?:
for /f "skip=1 delims=" %%a in (
'wmic partition list instance' ^| findstr /r /v "^$"'
) do @set part_inst=%%a