3

何らかの理由で、PAUSEイベントでSpaceを押すと、バッチスクリプトがビープ音を鳴らします。

私は現在両方を持っています:

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を押したときに発生します。

入力「エラー」が発生している場合でも、バッチスクリプトを完全にサイレントにする方法についてのアイデアはありますか?

ありがとう

4

2 に答える 2

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。正直なところ、あなたの症状を再現することはできません。ビープ音を止めた後、無音が聞こえます。そのため、ユーザーがスペースバーを押してビープサービスが停止したときに、どのイベントがトリガーされるのか完全にはわかりません。

于 2013-02-02T13:40:51.897 に答える
0

いつでも黙祷を録音し、それを使用してWindowsをテーマにしたビープ音の1つを置き換えることができます。

ビープ音の原因を確認できるように、コードをもう少し投稿することをお勧めします。PAUSEはそうすべきではないからです。

于 2013-02-02T18:28:21.523 に答える