返回列表 发帖

[文本处理] 如何实现从ping命令结果中查找指定字符串并以响铃提示查找成功?

本帖最后由 pcl_test 于 2016-3-8 21:13 编辑

ping命令 查寻特征字符串,如果查找成功就响铃提示,现在的结果是不管成功失败都响铃
for /L %i in (1,1,5) do ping -a -n 1 192.168.1.%i|find /i "mypc" >null && echo ^GCOPY
1

评分人数

本帖最后由 qzwqzw 于 2025-3-7 14:10 编辑

目前搜索结果,
在windows10的设置-主题-声音-程序事件有对应的媒体文件配置
但是没有针对这个CMD下响铃字符的配置

经过跟踪分析
CMD先会在注册表中的以下位置寻找媒体文件,默认是前景声音 Windows Foreground.wav
计算机\HKEY_CURRENT_USER\AppEvents\Schemes\Apps\.Default\SystemHand\.Current
如果找不到这默认键值或对应的媒体文件,则CMD还会找下面这个键值
计算机\HKEY_CURRENT_USER\AppEvents\Schemes\Apps\.Default\.Default\.Current
其中的默认值是背景声音文件 C:\Windows\Media\Windows Background.wav
如果还找不到这默认键值或对应的媒体文件,则系统会使用声卡模拟发出传统的bee声
只是这个bee声频率会低很多,介于400~500Hz之间
1

评分人数

天的白色影子

TOP

回复  qzwqzw


    我这里echo ^G 报的是这个声音 "C:\Windows\Media\Windows Foreground.wav"

传一 ...
523066680 发表于 2025-3-7 09:37



    确实是这个声音

看看在哪里可以配置它
天的白色影子

TOP

回复 22# qzwqzw


    我这里echo ^G 报的是这个声音 "C:\Windows\Media\Windows Foreground.wav"

传一份网盘:
链接:https://pan.baidu.com/s/1KlrKrNHurD3_BJ_702Lx5Q
提取码:60o7
[url=][/url]

TOP

本帖最后由 qzwqzw 于 2025-3-7 09:23 编辑

前不久手痒
翻出来很久前写的一个ping扩展脚本
调试过程中发现一个未注意到的小问题
之前 echo  是通过主机蜂鸣器响铃的
现在我的win10电脑上是通过声卡+扬声器响铃的
这个可以理解,毕竟现代主机已经找到不到蜂鸣器了

但是它发出来的的声调和蜂鸣器发出来的声音完全不同
不是那种短促单一的高频音调
是更加悠长且抑扬顿挫的多个音调
而且会将多个连续的响铃字符    转成一声响铃
这直接让我的程序无法区分多响铃和单响铃
程序功能被系统强制阉割

我另外也测试了win10笔记本
也是使用声卡扬声器发声
但是声调和win10台式机的完全不同
更接近蜂鸣器发出来的短促、单一、高调的bee bee声
而且也可以区分多响铃和单响铃

不知道大家还有谁遇到了跟我一样的问题?
天的白色影子

TOP

回复 19# pcl_test


    最后为什么会输出Y呢?

TOP

回复 17# WHY
好一个看不见的07,这招倒是省的按键了.

TOP

@echo off
for /f "delims=Y" %%a in ('cmd /u /c echo 备') do set "bel=%%a"
echo;%bel%
pauseCOPY

TOP

回复 17# WHY


  谢了,这个确实能用

TOP

"纯正的批处理"
echo;

TOP

回复 15# happy886rr


    是放在bat中执行的,但是还是没响铃。我电脑cmd下响铃键确实是Ctrl+G。能不能把你成功的bat文件附件发给我一份,谢了。

TOP

回复 14# fans60
最终就在按键代码上,
mshta "vbscript:createobject("wscript.shell").sendkeys("^{ESC}M")(window.close)"
mshta "vbscript:createobject("wscript.shell").sendkeys("^G")(window.close)"COPY
这两行的按键发送是成功,我都用它来自动打字。只是不知你电脑得响铃快捷键是怎么设置的。ctrl+G还是其他键响铃。for循环绝对没问题,放bat里运行才行。
就是按键代码你稍微改改就能打开响铃了。

TOP

回复 13# happy886rr

嗯, 谢了,中断for循环我也试过,一开始用的goto(在cmd中,没有放在bat中),失败了。你的可以成功推出for循环,但是还是没有响铃。

TOP

回复 10# fans60
加了vbs模拟按键,ping到了一定要跳出来,否则还在循环浪费时间。
这下基本没问题了。就是那几个按键代码"^{ESC}M"、"^G"你根据自己当前的响铃按键自己改
@echo off
for /L %%i in (2,1,5) do (
ping -a -n 1 192.168.1.%%i|find /i "%Computername%" && goto ring
)
exit
:ring
mshta "vbscript:createobject("wscript.shell").sendkeys("^{ESC}M")(window.close)"
mshta "vbscript:createobject("wscript.shell").sendkeys("^G")(window.close)"
pause>nulCOPY

TOP

回复 11# fans60


    字符被转义了。你可以mshta http://bathome.net/s/hta/ String.fromCharCode(7)>x.txt
然后每次使用时type x.txt
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

返回列表