如何使用批处理文件从内置的pc扬声器启动系统"嘟嘟"?

Kor*_*OoO 10 windows cygwin batch-file

我已经以交互模式编写了批处理脚本,用于执行某些任务.

有时,这些任务需要很长时间才能完成,然后批处理会询问用户是否要继续执行下一个任务,或者返回批处理的主菜单或...等

现在,我想要做的是添加一个"交互式警报"命令,听起来很小的哔哔声(例如:当我们开启电脑时),提醒批处理用户提出新问题.

我不知道这是否可能,但对我来说最重要的是,不要使用像WMP这样的GUI应用程序.我只想在背景中这样做,即使必须要发出哔哔声来自免费发言人,或使用第三方CLI应用程序(顺便说一句,我在Win7-x64上安装了Cygwin).

请注意,我会在交互式问题之前添加该警报命令,等待用户的答案进入下一阶段,所以我不能通过发出真正的错误蜂鸣声来完成批处理!

那么,有人请告诉我该怎么做?

感谢您的帮助 :)

npo*_*aka 22

rundll32.exe Kernel32.dll,Beep 750,300
Run Code Online (Sandbox Code Playgroud)

要么

rundll32.exe cmdext.dll,MessageBeepStub
Run Code Online (Sandbox Code Playgroud)

要么

rundll32 user32.dll,MessageBeep
Run Code Online (Sandbox Code Playgroud)

使用rundll函数,你不需要像^G.使用第一种方法,您还可以设置要发出哔哔声的频率和时间.

你也可以查看这个

  • @npocmaka - 感谢您的总结。我可以建议在您的答案中添加此警告/警告,以及如何停止它吗?(说实话,那是一种不会停止的烦人的声音!:-) (5认同)
  • 每次运行它时,我都会连续发出蜂鸣声,但是不会每次都以不同的频率出现,这可能会很高。如何在不重新启动的情况下将其关闭? (3认同)
  • @MartinJ.H. - 你可以执行`taskkill /im rundll32.exe /f`。对于较新的 Windows 版本,您不能再向 rundll 函数传递更多参数。我将尝试通过更好地使用 `Kernel32` 函数来更新我的脚本,但第二行应该可以毫无顾虑地工作。 (3认同)

Ste*_*han 10

BEL直接输入(例如)记事本是不可能的.

要获取它,请echo ^G>>yourbatch.bat在命令行上键入(不要键入^ G,但是<Control>-G,它将显示^G在屏幕上).这会在文件的末尾添加一个奇怪的字符.那是BEL字符0x007("control-G").只需将其复制/移动到任何echo命令即可.也

set /p "input=^Ggive value: "
Run Code Online (Sandbox Code Playgroud)

是可能的(其中^G代表奇怪的字符)

  • 生成`BEL`是一回事(不是'ALT`-`7`而是'ALT` -`0` -`0`-`7`,或者按'Ctrl + G`),但它不起作用拥有.你必须'ECHO`它:键入`echo`(包括空格),然后按****`Ctrtl-G`**或**`ALT`,当你按住它时,输入'007`.然后释放`ALT`键.`^ G`应该出现在你的屏幕上.按ENTER键,你应该听到哔哔声(注意:Win10捕获`BEL`并改为给你一个系统声音) (3认同)

T3R*_*R0R 9

以下可用于发出哔声

  • 不暂停脚本
  • 无需创建新行。
  • 不需要使用不可打印的字符
 Echo/| CHOICE /N 2> nul & rem BEL
Run Code Online (Sandbox Code Playgroud)

这是对选择命令的故意误用,即 Echo 通过管道连接到 Choice 什么也没有,从而导致非破坏性错误。STDERR 被重定向到 nul,并且默认选择提示通过/N开关被抑制,这意味着不输出新行。

如果出于某种原因您想在整个脚本中重复使用这种烦人的语气,您可以将其定义为宏

Set "BEL=Echo/| CHOICE /N 2> nul"
%BEL%
Run Code Online (Sandbox Code Playgroud)

  • @HTWingNut:解决方法很简单:`set /P "=X" &lt; nul | 选择 /N 2&gt; nul` (4认同)