[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

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

试试 链接
bat小白,请多指教!谢谢!

TOP

回复 2# 77七


    太复杂了, 感谢用Powershell应该可以实现

TOP

sc query Audiosrv|findstr RUNNING >nul && echo running || echo stoped

TOP

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

回复 1# 小白龙

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

TOP

回复 4# went


    这个不行, 明明有红叉, 但是执行代码后却显示正在运行

TOP

回复 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 控制器

TOP

回复 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 })
复制代码

TOP

返回列表