Я хочу написать командный файл так, чтобы при запуске его в cmd он устанавливал новую переменную, равную букве диска моей флешки (если, конечно, это единственное устройство хранения такого типа). Предположим пока, что мне все равно, к нему добавлена двоеточие или нет.

Вот что я попробовал, подключив работающий Integral USB к моему ноутбуку:

@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!
    )
)

Это был выход:

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

Я довольно новичок в командной строке, как вы можете сказать, так что, пожалуйста, держись со мной .. Может кто-нибудь хотя бы указать на некоторые очевидные ошибки в сценарии?

Также это результат запуска команд wmic из 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

1 ответ1

0

Ты рядом. Вы хотите пропустить первую строку. Вы хотите получить и описание, и идентификатор устройства одновременно (запятая зарезервирована, поэтому вы должны указывать ее с помощью каретки), и, поскольку в выводе есть пробелы, вы должны включить несколько выходов в if и put это в кавычках. Вот пример, который получает последний съемный диск и последний локальный фиксированный диск. Получить первый из них было бы сложнее, но, похоже, у вас все равно будет только один. Вы можете использовать это, как вы хотели бы, например. трубопровод в другой процесс.

@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%

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .