Я немного покопался в Google и Stack, но у меня возникли проблемы с поиском метода в командной строке, который будет возвращать значение имени текущего устройства вывода звука. Я знаю, что это можно сделать в PowerShell, но я пытаюсь назначить скрипт как горячую клавишу, которая принимает только типы файлов EXE/BAT. Я написал оставшуюся часть сценария, но хотел бы написать IF/THEN, чтобы определить, какое устройство должен выбрать сценарий.

Вот что у меня так далеко:

@echo off
setlocal enableextensions
setlocal enabledelayedexpansion
set $title=---- Swapping Sound Output Device ----
set $error=%ERRORLEVEL%
title Sound Output Swap
call :Splash
exit /B %ERRORLEVEL%
:Splash
cls
echo %$title%
cd "C:\Users\Main\Desktop\Utilities\Tools\NirSoft Tools\NirSoft\"
nircmd.exe "setdefaultsounddevice" "X-Fi Headphones" "0" , , Hide
nircmd.exe "setdefaultsounddevice" "X-Fi Headphones" "1" , , Hide
nircmd.exe "setdefaultsounddevice" "X-Fi Headphones" "2" , , Hide
echo "Output set to: X-Fi Headphones."
timeout /t 5
exit

Я хотел бы написать что-то вроде:

if %$input% EQU "Headset" (
set %$swap% = "X-Fi Headphones"
)
if %$input% EQU "X-Fi Headphones" (
set %$swap% = "Headset"
)
nircmd.exe "setdefaultsounddevice" %$swap% "0" , , Hide

Таким образом, полный код будет:

@echo off
setlocal enableextensions
setlocal enabledelayedexpansion
set $title=---- Swapping Sound Output Device ----
set $error=%ERRORLEVEL%
set $input=null
set $swap="X-Fi Headphones"
title Sound Output Swap
call :Splash
exit /B %ERRORLEVEL%
:Splash
cls
echo %$title%
cd "C:\Users\Main\Desktop\Utilities\Tools\NirSoft Tools\NirSoft\"
if %$input% EQU "Headset" (
set %$swap% = "X-Fi Headphones"
)
if %$input% EQU "X-Fi Headphones" (
set %$swap% = "Headset"
)
nircmd.exe "setdefaultsounddevice" %$swap% "0" , , Hide
nircmd.exe "setdefaultsounddevice" %$swap% "1" , , Hide
nircmd.exe "setdefaultsounddevice" %$swap% "2" , , Hide
echo "Output set to: " & %$swap% & "."
timeout /t 5
exit

Любая помощь приветствуется! Спасибо.

0