Batch File - Sabe se o disco está particionado ou não

1

Eu estou trabalhando no ambiente Winpe, como obter informações se o disco 0 é particionado ou não para lançar comandos específicos em cada caso Eu tentei isso, mas como conseguir isso funciona corretamente em um arquivo de lote?

set part_inst=wmic partition list instance

se o disco não for inicializado, ele retornará:

No Available Instance.

else se as partições forem encontradas, ele retornará:

Index
0
1
2

como usar essas informações em um arquivo de lote para iniciar o procedimento como este

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_**
)
    
por Abdelhafid Madoui 31.03.2014 / 12:14

2 respostas

1

Expandindo a resposta de Oliver Salzburg, aqui está um exemplo de snippet que funciona fora da caixa no Windows PE, onde apenas o comando find está disponível por padrão. Também alterei a verificação de variável real para torná-la o mais independente de linguagem possível:

@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_**
)
    
por 31.03.2014 / 16:10
1

Para armazenar o resultado de um comando executado em uma variável, você não pode simplesmente atribuí-lo usando set .

Uma abordagem popular é usar for conforme descrito na pergunta do StackOverflow arquivos de lote do Windows: Como definir uma variável com o resultado de um comando? .

Talvez seja necessário combinar isso com a sugestão de Como posso remover linhas vazias da saída wmic? :

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