Я хотел бы написать один пакетный файл, который переключает мое звуковое устройство по умолчанию, так как я использую только два.
Я уже использую nircmd для установки устройства по умолчанию, но я не нашел способа извлечь имя текущего устройства.
Я хотел бы написать один пакетный файл, который переключает мое звуковое устройство по умолчанию, так как я использую только два.
Я уже использую nircmd для установки устройства по умолчанию, но я не нашел способа извлечь имя текущего устройства.
Вы можете использовать SoundVolumeView, чтобы записать ваши аудиоустройства в файл CSV, а затем проанализировать его, используя cut и grep:
SoundVolumeView.exe /scomma dump.csv
cut dump.csv -d',' -f1,5|grep ',Render'|cut -d',' -f1
К сожалению, он не поддерживает стандартный вывод, поэтому необходимо выполнить запись в файл.
Столбец 1 содержит имя устройства, столбец 5 - столбец с именем "По умолчанию" и содержит либо "Render", либо "Capture" (или ничего). Если вы изменили порядок столбцов в графическом интерфейсе, вы должны изменить индексы. Лучше, чем фиксированные индексы, будет разбирать первую строку в поисках заголовков столбцов "Имя" и "По умолчанию".
Что касается cut и grep, я использую программы, включенные в Git для Windows. Если вы не хотите устанавливать Git, вы можете использовать gow. Они также включены в утилиты GnuWin и GNU для Win32, но они не обновлялись годами.
Если вы не возражаете против использования PowerShell, попробуйте Get-DefaultAudioDevice
из командлетов Powershell для работы с аудиоустройствами Windows:
Базовое управление аудиоустройствами командной строки из Powershell, включая консоль диспетчера пакетов Nuget.
Особенности: Установка громкости и переключение звука на устройстве воспроизведения по умолчанию. Получить список устройств и установить аудиоустройство по умолчанию.
...
Выставленные Командлеты
Get-DefaultAudioDevice Get-AudioDeviceList Set-DefaultAudioDevice [-Index] <Int> Set-DefaultAudioDevice [-Name] <String> Set-DefaultAudioDevice [-InputObject] <AudioDevice> Set-DefaultAudioDeviceVolume -Volume <float> Get-DefaultAudioDeviceVolume Set-DefaultAudioDeviceMute <Bool> Set-DefaultAudioDeviceMute #Toggle Get-DefaultAudioDeviceMute Write-DefaultAudioDeviceValue [-StreamValue]