我想编写一个批处理文件来切换我的默认声音设备,因为我只使用两个。
我已经在使用 nircmd 设置默认设备,但我还没有找到提取当前设备名称的方法。
答案1
我还没有找到提取当前音频设备名称的方法。
如果你不介意使用 PowerShell,那么尝试Get-DefaultAudioDevice
一下用于操作 Windows 音频设备的 Powershell Cmdlet:
Powershell 的基本命令行音频设备控制,包括 Nuget 包管理器控制台。
功能:设置音量并在默认播放设备上切换静音。获取设备列表并设置默认音频设备。
...
公开的 Cmdlet
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]
答案2
您可以使用音量视图将音频设备转储到 CSV 文件中,然后使用 cut 和 grep 对其进行解析:
SoundVolumeView.exe /scomma dump.csv
cut dump.csv -d',' -f1,5|grep ',Render'|cut -d',' -f1
不幸的是,它似乎不支持标准输出,因此需要写入文件。
第 1 列包含设备名称,第 5 列是名为“Default”的列,包含“Render”或“Capture”(或不包含任何内容)。如果您更改了 GUI 中的列顺序,则必须更改索引。比固定索引更好的方法是解析第一行以查找列标题“Name”和“Default”。
至于 cut 和 grep,我使用包含在适用于 Windows 的 Git。如果你不想安装 Git,你可以使用戈夫。它们也包括在图形化界面和适用于 Win32 的 GNU 实用程序,但这些已经好几年没有更新了。
答案3
SoundVolumeView.exe /scomma exit.csv
for /f "tokens=4 delims=, skip=1" %%a in (exit) do echo %%a
答案4
"%CD%\SOUNDVOLUMEVIEW\SoundVolumeView.exe" /scomma "%CD%\SOUNDVOLUMEVIEW\Audio.txt"
for /f "tokens=1 delims=," %%d in ('type "%EXTRA%\SOUNDVOLUMEVIEW\Audio.txt" ^| find "Capture,Capture"') do set "INPUTDEVICE=%%d"
echo Default audio input device is: "%INPUTDEVICE%"
for /f "tokens=1 delims=," %%a in ('type "%CD%\SOUNDVOLUMEVIEW\Audio.txt" ^| find "Render,Render"') do set "OUTPUTDEVICE=%%a"
echo Default audio output device is: "%OUTPUTDEVICE%"
将此脚本复制到 SoundVolumeView 目录内的批处理文件中。它将当前音频输入和输出设备分别放入变量“%INPUTDEVICE%”和“%OUTPUTDEVICE%”中。
我希望这有帮助!