Board logo

标题: [系统相关] 如何用批处理或powershell判断电脑上是否插好了音箱或耳机 [打印本页]

作者: 小白龙    时间: 2025-1-14 15:53     标题: 如何用批处理或powershell判断电脑上是否插好了音箱或耳机

是这样的, 当我电脑上没插耳机或音箱, 桌面右下角的音量图标上会有一个红X, 插上后就消失了, 我想知道, 用什么批处理命令或powershell代码能判断, 用gpt试了好多轮都没有解决
作者: 77七    时间: 2025-1-14 18:59

试试 链接
作者: 小白龙    时间: 2025-1-14 19:46

回复 2# 77七


    太复杂了, 感谢用Powershell应该可以实现
作者: went    时间: 7 天前 13:13

sc query Audiosrv|findstr RUNNING >nul && echo running || echo stoped
作者: aloha20200628    时间: 7 天前 15:13

本帖最后由 aloha20200628 于 2025-1-15 15:17 编辑

回复 1# 小白龙

直接在命令行用 wmic 列出当前电脑已连接的全部设备名单再从中用关键词筛选与耳机音箱有关的设备表单...
  1. wmic path Win32_PnPEntity get caption|findstr /i "audio phone Speaker 音频 耳机 音箱"
复制代码

作者: 小白龙    时间: 6 天前 10:53

回复 4# went


    这个不行, 明明有红叉, 但是执行代码后却显示正在运行
作者: 小白龙    时间: 6 天前 10:54

回复 5# aloha20200628


    这个也不行, 明明有红叉, 却有下面的输出

C:\Users\Administrator>wmic path Win32_PnPEntity get caption|findstr /i "audio phone Speaker 音频 耳机 音箱"
High Definition Audio 设备
Microphone (High Definition Audio Device)
Line In (High Definition Audio Device)
High Definition Audio 控制器
作者: 小白龙    时间: 6 天前 11:28

回复 5# aloha20200628


    在无忧用另一个坛友的github代码解决了, 但有好复杂, 有没有更简单的?
  1. cls
  2. # 检查是否存在符合条件的音频设备
  3. $exists = Get-PnpDevice -Class AudioEndpoint -Status OK -ErrorAction SilentlyContinue |
  4.     Where-Object { $_.DeviceID -match "{\d\.\d\.0\.\d*}" } |
  5.     ForEach-Object {
  6.         $deviceIdPart = $_.DeviceID -replace '^.*\.', ''
  7.         $deviceStatePath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Render\$deviceIdPart"
  8.         (Get-ItemProperty -Path $deviceStatePath -Name 'DeviceState' -ErrorAction SilentlyContinue).DeviceState -lt 268435456
  9.     } |
  10.     Where-Object { $_ } |
  11.     ForEach-Object { break; $true }
  12. # 输出结果:1 表示找到设备,0 表示未找到
  13. Write-Output $(if ($exists) { 1 } else { 0 })
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2