中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » vbs读取剪贴板和字符串提取的请教
作者:
标题: vbs读取剪贴板和字符串提取的请教 上一主题 | 下一主题
knight1006
初级用户





积分 29
发帖 16
注册 2005-11-15
状态 离线
『楼 主』:  vbs读取剪贴板和字符串提取的请教

请问,在剪贴板里有如下信息,我想“把目标位置:”后面的内容提取出来,播放。用VBS。
看到过有人写的调用WMPlayer.ocx来播放,代码如下:
set wmp = CreateObject("WMPlayer.ocx")
wmp.url = "C:\Documents and Settings\Administrator\桌面\琵琶语.wma"
'wmp.play
do until wmp.playState = 1
wsh.sleep 100
loop
现在想把剪贴板内音乐的路径传给上面的代码实现播放,请大家帮帮我。



剪贴板内容如下:

来源位置: http://www.mzfstv.com/newgn1/mp3/%E7%BB%83%E4%B9%A0.mp3
目的位置: C:\Users\Knight\Desktop\练习.mp3
大小: 4.0 MB (4,182,016 字节)
已下载: 4.0 MB (4,182,016 字节)

[ Last edited by knight1006 on 2009-4-15 at 05:59 ]

2009-4-15 00:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
s11ss
银牌会员





积分 2098
发帖 566
注册 2007-9-11
状态 离线
『第 2 楼』:  


s = CreateObject("htmlfile").parentWindow.clipboardData.getData("Text")

Set re = New RegExp
re.Pattern = "目的位置: (.+)"

play re.Execute(s)(0).SubMatches(0)

Sub play(file)
        set wmp = CreateObject("WMPlayer.ocx")
        wmp.url = file
        'wmp.play
        do until wmp.playState = 1
        wsh.sleep 100
        loop
End Sub


2009-4-15 13:09
查看资料  发短消息 网志   编辑帖子  回复  引用回复
knight1006
初级用户





积分 29
发帖 16
注册 2005-11-15
状态 离线
『第 3 楼』:  

非常感谢!!!

2009-4-15 14:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
newxso
初级用户

l i u s s


积分 73
发帖 101
注册 2008-9-17
来自 GZ
状态 离线
『第 4 楼』:  

对 Pattern 属性不认识,因此我使用了较落后的方法:

Set objHTML = CreateObject("htmlfile")
ClipboardText = objHTML.ParentWindow.ClipboardData.GetData("text")
strText=Split(ClipboardText,vbCrLf)
For Each strLine In strText
    If Instr(strLine,"目的位置")>0 Then Exit For
Next
strPath=replace(strLine,"目的位置: ","")

Set Wmp = CreateObject("WMPlayer.ocx")
Wmp.Url = strPath
Wsh.Sleep 500
do Until Wmp.PlayState = 1
   Wsh.Sleep 500
loop


批处理方式:
@echo off
mshta vbscript:createobject("scripting.filesystemobject").opentextfile("clip.txt",2,true).writeline(clipboardData.GetData("text"))(window.close)

for /f "delims=" %%a in ('type clip.txt^|find "目的位置"') do set strline=%%~a
set strpath=%strline:目的位置: =%
del clip.txt
start "" "%strpath%"
把最下一句改成如下就可以后台播放:
start mshta vbscript:createobject("wscript.shell").run("""c:\program files\windows media player\wmplayer.exe"" ""%strpath%""",0)(window.close)
或生成临时文件(播放完会自我删除):
(
echo Set Wmp=CreateObject^("WMPlayer.ocx"^)
echo Wmp.Url="%strpath%"
echo Wsh.Sleep 500
echo do Until Wmp.PlayState=1
echo Wsh.Sleep 500
echo loop
echo CreateObject^("Scripting.FileSystemObject"^).GetFile^(WScript.ScriptFullName^).Delete
)>%temp%\wmp.vbs
start wscript.exe "%temp%\wmp.vbs"
[ Last edited by newxso on 2009-4-17 at 18:01 ]

2009-4-15 22:45
查看资料  发短消息 网志   编辑帖子  回复  引用回复
knight1006
初级用户





积分 29
发帖 16
注册 2005-11-15
状态 离线
『第 5 楼』:  

感谢楼上热心的解答

2009-4-17 10:57
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
knight1006
初级用户





积分 29
发帖 16
注册 2005-11-15
状态 离线
『第 6 楼』:  

不过上面的批处理达不到预期效果,我是想要后台播放,不显示界面

[ Last edited by knight1006 on 2009-4-17 at 11:14 ]

2009-4-17 11:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: