script ejecutar desde como comandos bat automaticamente archivo abrir audio powershell batch-file powershell-v2.0 playback

audio - ejecutar - powershell a cmd



Configuración del dispositivo de reproducción ejecutando un archivo por lotes/script de powershell (8)

Tengo mi computadora (Windows 7) conectada al televisor, y muy a menudo cambio el dispositivo de salida para el sonido entre Audio Digital (S / PDIF) (dispositivo de audio de alta definición) y mi auricular (2- Corsair CA-HS1 USB Auriculares)

Quiero poder ejecutar un archivo por lotes / script que lo cambie por mí, por lo que no tengo que hacer clic con el botón derecho del ratón> dispositivos de reproducción> "Marcar dispositivo de salida" y hacer clic en "establecer predeterminado".

Sé que es un problema de lujo, pero bueno, ¿quizás pueda aprender algo de alguien?

Toda la ayuda apreciada!


Así es como configuro ''Línea 1'' como dispositivo de reproducción:

start /min "" G:/....../nircmd.exe setdefaultsounddevice "Line 1"

NirCmd es una pequeña utilidad de línea de comandos que puede descargar y que le permite realizar algunas tareas útiles sin mostrar ninguna interfaz de usuario.


La siguiente secuencia de comandos está escrita en Windows 7 y utiliza claves de envío. Se basa en otros fragmentos de código que encontré, pero los agrega para garantizar que la selección sea coherente y que no se dejen ventanas dispersas. Es posible que desee ajustar SleepTime para su sistema si aún se reproduce. Llame al script utilizando un atajo con el índice del elemento que desea seleccionar en la ventana Dispositivos de reproducción como primer parámetro. Puede crear una nueva ''barra de herramientas'' en su ''barra de tareas'' para seleccionar cada dispositivo con un solo clic: imagen de la barra de herramientas de la barra de tareas

''=============================================================================== ''This script uses sendkeys to select the Sound Output device ''First parameter should be the desired device number in ''Playback Devices'' list ''=============================================================================== Option Explicit Const SleepTime = 200 Dim WindSh ''=============================================================================== ''MAIN ROTUINE ''=============================================================================== ''Check the command line input if ( Wscript.Arguments.Count <> 1) then MsgBox "You must provide a single integer arguement representing the device number", vbinformation + vbokonly, Wscript.ScriptName Wscript.Quit 1 elseif ( false = IsNumeric( Wscript.Arguments.Item(0) ) ) then MsgBox "The arguement provided was not an integer number: " & Wscript.Arguments.Item(0), vbinformation + vbokonly, Wscript.ScriptName Wscript.Quit 2 End If set WindSh = CreateObject("Wscript.Shell") WindSh.run("control.exe mmsys.cpl") do while (WindSh.AppActivate("Sound") = false) WScript.Sleep SleepTime loop WindSh.sendkeys("{DOWN " & Clng( Wscript.Arguments.Item(0) ) & "}") WScript.Sleep SleepTime WindSh.sendkeys("{TAB 2}") WScript.Sleep SleepTime WindSh.sendkeys("{ENTER}") WScript.Sleep SleepTime WindSh.sendkeys("%{F4}") WScript.Sleep SleepTime if (WindSh.AppActivate("Sound") = true) then WindSh.sendkeys("%{F4}") end if


Para seguir con publicación de , NirCmd es una excelente manera de hacer esto. Además, si lo empareja con AutoHotKey , puede crear un archivo ejecutable que cambiará sus dispositivos sin abrir ventanas molestas de CMD cada vez que lo ejecute. Por ejemplo, tengo dos fuentes con las que cambio todo el tiempo, una es mis auriculares y la otra es mi monitor. Para mi monitor creé un script ahk que hace esto:

#NoEnv SendMode Input SetWorkingDir %A_ScriptDir% ;I have nircmd in the same folder as these scripts Run, nircmd setdefaultsounddevice "Acer X34-8" 1 Run, nircmd setdefaultsounddevice "Acer X34-8" 2

Y otra para mis auriculares con las dos últimas líneas cambiadas a:

Run, nircmd setdefaultsounddevice "Headset Earphone" 1 Run, nircmd setdefaultsounddevice "Headset Earphone" 2

Luego, puede compilar cada script ahk en un exe y vincular cada exe a una macro de teclado para que pueda ejecutarlos presionando un par de teclas. Personalmente, estoy usando un Corsair K95, así que uso su software para enlazarlos a mis teclas ''G''.

Además, tenga en cuenta que si está en sus preferencias de sonido, puede cambiar el nombre de cualquiera de los dispositivos para evitar conflictos de nombres.


Por lo que entiendo, no hay manera de hacer esto mediante programación. Este es un diseño deliberado, ya que Microsoft no quiere que las aplicaciones anulen la configuración de audio establecida por el usuario.

Encontrará la misma respuesta here pero si encuentra soluciones que manipulen ventanas, puede echar un vistazo here .


Puede que no esté relacionado con cambiar el dispositivo de audio a través de un script, pero también tengo mi computadora conectada a mi TV a través de HDMI.

Cuando quiero ver archivos de video en el televisor, uso Media Player Classic Home Cinema: esto me permite especificar el dispositivo de audio para MPH: HC en las opciones sin cambiar mi dispositivo de sonido predeterminado en toda la computadora.

Si su uso es similar al mío, quizás MPC: HC le resuelva el problema.


Tenía exactamente el mismo requisito que tú, y DESPUÉS de encontrar tu publicación, encontré lo siguiente:

https://web.archive.org/web/20131231034118/http://downloadsquad.switched.com/2010/06/16/windows-7-tip-how-to-change-the-default-audio-device-with-a-hot/

Desafortunadamente no es una función nativa de Windows; requiere la descarga de una pequeña herramienta de script de código abierto llamada AutoHotKey, pero funciona bien y solo requiere una pequeña cantidad de memoria (1 ~ 2.5Mb)

El guión proporcionado en el artículo original no funciona para mí. Está buscando dispositivos habilitados / deshabilitados y cambiando ese valor, en lugar de cambiar el dispositivo predeterminado. Lo he editado para cambiar entre 2 dispositivos predeterminados ahora. Funciona al abrir el panel de control de sonido (mmsys.cpl) y luego desplazarse hacia abajo en la lista de dispositivos de reproducción al segundo elemento de la lista (que es la parte {Abajo 2}). Esto se debe a que mis altavoces son el segundo elemento de mi lista. A continuación, comprueba si el dispositivo es predeterminado o no. Si no, lo establece como predeterminado y cierra la ventana. Si ya es el valor predeterminado, se desplaza hacia abajo otras 2 veces y lo establece como predeterminado.

Por lo tanto, deberá enmendar las líneas {Abajo 2} para que se ajusten a su propia lista de dispositivos.

#+a:: Run, mmsys.cpl WinWait,Sound ControlSend,SysListView321,{Down 2} ControlGet, selectedDevice, List, Focused, SysListView321 Loop, Parse, selectedDevice, %A_Tab% if a_index <> 3 continue else { if A_LoopField <> Default Device { ControlClick,&Set Default ControlClick,OK WinWaitClose SoundPlay, *-1 return } else { ControlSend,SysListView321,{Down 2} ControlClick,&Set Default ControlClick,OK WinWaitClose SoundPlay, *-1 return } }


Tenía un dispositivo HDMI que cambia su nombre, por lo que ninguna de las soluciones existentes funcionó para mí.

Finalmente, terminé con este PowerShell y uso de la aplicación NirCmd .

$name = "SMART*" # list active audio playback devices. (Note for cature devices change Render to Capture) $device = Get-ItemProperty -Path "HKLM:/SOFTWARE/Microsoft/Windows/CurrentVersion/MMDevices/Audio/Render/*/" | where {$_."DeviceState" -eq 1} | foreach-object -Process {(Get-ItemPropertyValue -Path ($_.PSPath + "/Properties/") -Name "{a45c254e-df1c-4efd-8020-67d146a850e0},2")} | Where-Object {$_ -like $name} C:/bin/NIRCMDC setdefaultsounddevice $device 1 C:/bin/NIRCMDC setdefaultsounddevice $device 2


Tenga en cuenta que si utiliza "nircmd setdefaultsounddevice speakers" en un script de inicio de sesión de entorno empresarial o educativo, el sonido seguirá saliendo de los altavoces cuando los auriculares estén conectados.