Несмотря на мою нежную любовь к Powershell старый добрый CMD все же иногда нужен. Например, тогда, когда компьютер загружен с аварийного диска. Задача следующая - необходимо получить букву диска системного раздела. Всем известно, что во время загрузки с аварийных дисков буквы располагаются несколько в ином порядке, нежели обычно. Как же будем искать? Очень просто - по метке диска, которая была задана заранее - старая привычка маркировать раздел с ОС именно как "OS". Что ж, посмотрим, что у нас имеется. А имеется инструмент под названием wmic:
wmic logicaldisk
Эта команда покажет все логические диски, зарегистрированные в системе. А как бы нам отсечь ненужные разделы? Это можно сделать, отфильтровав вывод команды по полю volumename, а делается следующим образом:
wmic logicaldisk where volumename="OS"
В ответ получаем тонну сведений об интересующем нас логическом диске. Далее - выбираем из этого потока информации букву диска:
wmic logicaldisk where volumename="OS" get deviceID
Выводом в моем случае является вот это:

DeviceID
C:

Итак, почти добрались. Теперь бы еще избавиться от первой строки вывода. Не вопрос - воспользуемся "трубой" (конвейером) и командой поиска findstr:
wmic logicaldisk where volumename="OS" get deviceID | findstr :
Да, ищем символ двоеточия, который всегда присутствует рядом с именем диска. Получаем то, что нужно:
C:
Ну и самое вкусное - как бы теперь этот вывод утрамбовать в переменную. Именно та точка, где я снова и снова вспоминаю добрым словом Powershell, потому что там вывод можно просто присвоить некой переменной. В CMD нам это недоступно, поэтому будем обманывать через оператор FOR.

Согласен, что использование временного файла для этих целей - пальба из пушки по воробьям, но учитывая просто мозгодробительный синтаксис FOR - чем проще решение, тем оно надежнее.