Arquivo em lote que define uma variável igual à letra da unidade do primeiro disco removível encontrado

0

Eu quero escrever um arquivo em lote de tal forma que quando eu corro-lo em cmd, ele define uma nova variável igual à letra da minha unidade flash USB (se, é claro, é o único dispositivo de armazenamento desse tipo). Suponha, por enquanto, que eu não me importo se tem cólon anexado a ele ou não.

Isso é o que eu tentei tendo um Integral USB funcionando conectado ao meu laptop:

@echo off
for /F "tokens=1,2,3,4,5" %%A IN ('wmic logicaldisk get description') DO ( 
    if %%A=="Removable Disk" (
        @echo wmic logicaldisk get caption
    )else (
        @echo no luck!
    )
)

Esta foi a saída:

no luck!
no luck!
no luck!
no luck!
no luck!
no luck!

Eu sou muito novo para a linha de comando, como você pode dizer por favor, nu comigo .. Alguém pode pelo menos apontar alguns dos erros óbvios no script?

Além disso, este é o resultado dos comandos wmic sendo executados a partir do cmd:

C:\Users\Dziugas\Desktop>wmic logicaldisk get caption,description
Caption  Description
C:       Local Fixed Disk
D:       CD-ROM Disc
E:       CD-ROM Disc
F:       Removable Disk
    
por Dziugas 05.12.2014 / 03:47

1 resposta

0

Você está perto. Você quer pular a primeira linha. Você deseja obter a descrição e o ID do dispositivo ao mesmo tempo (a vírgula é reservada, portanto, você deve esbanjá-lo com um acento circunflexo) e, como a saída possui espaços, você deve incluir várias saídas no if e put entre aspas. Aqui está um exemplo que obtém o último disco removível e o último disco fixo local. Obtendo o primeiro de cada um seria mais complicado, mas parece que você só vai ter um de qualquer maneira. Você poderia usar isso como quiser, por exemplo. canalizando para outro processo.

@echo off 
REM setlocal keeps the variables from escaping the batch file (which I assume you want?)
setlocal
for /F "skip=1 tokens=1-10" %%A IN ('wmic logicaldisk get description^, deviceid') DO ( 
    REM echo %%A %%B %%C %%D %%E %%F %%G
    if "%%A %%B"=="Removable Disk" (
        set LastRemovableDisk=%%C
    )
    if "%%A %%B %%C"=="Local Fixed Disk" (
        set LastFixedDisk=%%D
    )
)

REM This part is just to demonstrate the output
echo %LastRemovableDisk%
echo %LastFixedDisk%
    
por 05.12.2014 / 05:32