我写了一个交互模式的批处理脚本,用于执行一些任务。
有时,这些任务需要很长时间才能完成,然后批处理会询问用户是否要继续下一个任务,或返回到批处理的主菜单或...等等
现在,我想要做的是添加一个“交互式报警”命令,该命令会发出短促的蜂鸣声(例如:就像我们打开PC时的提示),提醒批处理用户有新问题。
我不知道这是否可能,但对我来说最重要的是,不要使用像WMP等GUI应用程序。我只想从后台这样做,即使该哔哔声必须从免费扬声器,或通过使用第三方CLI应用程序(顺便说一句,我已经Cygwin安装在我的Win7-x64).
请注意,我将在交互式问题之前添加报警命令,等待用户的回答进入下一阶段,因此我不能通过发出真实的的错误蜂鸣音来完成批处理!
有人能告诉我怎么做吗?
感谢您的帮助:)
9条答案
按热度按时间vlurs2pr1#
rundll32.exe Kernel32.dll,Beep 750,300
在现代Windows系统的命令行中不再正常工作,因为rundll32不再接受整数值(再次通过命令行),***这将使用过长的默认值播放蜂鸣音(频率令人恼火)*:或
或
使用rundll函数,你不需要像
^G
这样的特殊符号。使用第一种方法,你也可以设置frequency and the time you want发出哔哔声,尽管可以看到警告,这些参数在现代系统的命令行中不再起作用,而是播放烦人的默认值。其他选择包括:
或使用systemSounds.bat
蜂鸣声的能力取决于主板以及主板是否有系统扬声器--随着系统倾向于只依赖"普通"扬声器,系统扬声器越来越少。另一种选择是通过这些扬声器播放声音。以下是一些选择:
使用
SAPI.SpVoice
的语音功能:这里this被 Package 在一个批处理文件中,单词可以作为参数传递。
SAPI.SpVoice
可用于播放wav
文件,您在默认的Windows安装中打包了一些文件。您可以使用script:另一种选择:Using the windows media player active-x objects来播放声音。在windows xp上它没有默认安装,但我认为对于较新的windows版本它是。它也可以播放
mp3
文件:还有一个比较模糊的例子--使用internet explorer的
<bgsound>
标签(它也可以播放mp3文件),script如下:这里有一种使用
BEL
字符生成声音的方法,代码易于复制粘贴(我称之为beeper.bat
):iaqfqrcu2#
不可能直接在(例如)记事本中键入
BEL
。要得到它,在命令行输入
echo ^G>>yourbatch.bat
(不要输入^
G
,而要输入<Control>-G
,它在屏幕上显示为^G
)。这会在文件的末尾放置一个看起来很奇怪的字符。这就是BEL
字符0x 007(“control-G”)。只要将它复制/移动到任何echo
命令中,你就可以了。还有(其中
^G
表示该奇怪字符)ctzwtxfj3#
可使用以下命令发出蜂鸣声
这是对choice命令的故意误用,通过管道到Choice的Echo's nothing导致了一个非破坏性错误。STDERR被重定向到nul,默认的choice提示符通过
/N
开关被禁止,意味着没有新行输出。如果出于某种原因,您希望在整个脚本中重复使用这种令人讨厌的音调,则可以将其定义为宏
omhiaaxx4#
回显后有一个ASCII控制码^G。2复制这个代码,用文本编辑器保存为ASCII/ANSI格式。
jv2fixgn5#
使用ECHO命令回显CTRL G
nhhxz33t6#
我认为更好的解决方案是在cmd提示符下将
^G
回显到一个文件,然后在脚本中键入该文件,这样就不需要在批处理文件本身中包含控制字符:现在在“beep.snd”文件中有一个ASCII 007字符,然后从你的.bat文件中,你所要做的就是键入它或复制到屏幕上:
或
mnemlml87#
我在Win 10中尝试了上面所有的选项,我用这个解决了
因此,在node.js中以编程方式显示如下(python或C类似)
monwx1rj8#
有点晚的党,但我发现这个变化的@npocmaka版本为我与Windows 10:
vhmi4jdf9#
这对我有用。
stackoverflow在第4行省略了一个特殊字符,代码粘贴在这里:hashb.in/long
并且线5和6当然可以互换使用。