从蜂鸣声中停止批处理文件

时间:2013-02-01 21:53:51

标签: batch-file cmd

出于某种原因,在PAUSE事件中按空格键时,我的批处理脚本会发出蜂鸣声。

我目前都有:

start /wait %comspec% /Q /C "net stop beep" >nul 2>&1
start /wait %comspec% /Q /C "sc stop beep" >nul 2>&1

...在我的脚本开头,已成功禁用系统蜂鸣声,但现在它已被Windows“主题”蜂鸣声取代。

当我进入CHOICE事件并且用户按下Space时,也会发生这种情况。

关于如何使批处理脚本完全静音的任何想法,即使在输入“错误”期间?

谢谢, d

2 个答案:

答案 0 :(得分:1)

尝试用这样的代码替换你的choice命令。

set /p choice="Please enter a choice: "

它需要用户按Enter键,但至少它不会发出哔哔声。

如果您真的想要这么做并关闭默认声音,我想您会在HKCU\AppEvents\Schemes\Apps\.Default\SystemAsterisk\.Current\(Default)HKCU\AppEvents\Schemes\Apps\.Default\AppGPFault\.Current\(Default)中找到它。

以下是概念的简要证明。

@echo off
setlocal

:: stop bleeping service
start /wait %comspec% /Q /C "sc stop beep" >nul 2>&1

:: store current event setting for Asterisk
set loc=HKCU\AppEvents\Schemes\Apps\.Default\SystemAsterisk\.Current
for /f "tokens=3*" %%I in ('reg query %loc%') do (
    set asterisk=%%I %%J
)

:: choice with service stopped and Windows Asterisk sound event still active
choice

:: set Windows Asterisk event sound to ""
reg add "%loc%" /v "" /t REG_SZ /d "" /f >NUL

:: choice with asterisk set to ""
choice

:: restore the sound
reg add "%loc%" /v "" /t REG_SZ /d "%asterisk%" /f >NUL

如果不起作用,请尝试将SystemAsterisk替换为AppGPFault。说实话,我无法重现你的症状。停止哔哔声后我听到沉默。因此,我不能完全确定当用户点击空格键并且哔声服务停止时会触发哪个事件。

答案 1 :(得分:0)

您可以随时录制静音,然后使用它来替换其中一个Windows主题的哔声。

我建议您发布一些代码,以便我们可以看到导致蜂鸣声的原因,因为PAUSE不应该这样做。