Я пытаюсь написать пакетный скрипт, который получает (среди прочего) список всех дисководов, которые есть у компьютера.Базовый код выглядит примерно так:
REM Build the list of disk drives to monitor
SETLOCAL enabledelayedexpansion
FOR /f "skip=1 tokens=1 delims=:" %%a in ('"WMIC logicaldisk WHERE drivetype=3 GET deviceid"') do (
SET "DISK_DATABASES=!DISK_DATABASES!%%a|"
SET "DRIVES_TO_MONITOR=!DRIVES_TO_MONITOR!%%a:\\|"
)
Я довольно очевидно строю два списка с немного различными форматами для использования позже.Однако, когда я запускаю это, вывод, который я получаю, выглядит примерно так:
C|D|E||
C:\\|D:\\|E:\\|:\\|
Теперь я ожидаю, что в обоих случаях трейлинг-труба будет, и я могу справиться с этим, но я действительно смущен, почемудополнительная пустая запись там.Если я запускаю команду wmic
вручную, я вижу, что в конце выходных данных действительно есть пустая строка, но я понимаю, что /f
специально должен был игнорировать пустые строки.
ЕслиЯ включаю ECHO
, похоже, что последняя строка просто возвращается как перевод каретки / перевод строки или аналогичный.Есть ли способ сделать то, что я ожидаю?Я что-то пропустил?Я пытался написать условие if
в цикле, чтобы исключить эту последнюю строку, но это было ... забавно и никогда не работало.Я ценю любую помощь.