中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-11 18:26
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » vbs读取剪贴板和字符串提取的请教 查看 877 回复 5
楼 主 vbs读取剪贴板和字符串提取的请教 发表于 2009-04-15 00:41 ·  中国 江苏 苏州 有线通(移动出口)
初级用户
积分 29
发帖 16
注册 2005-11-15 16:39
20年会员
UID 45306
状态 离线
请问,在剪贴板里有如下信息,我想“把目标位置:”后面的内容提取出来,播放。用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 ]
2 发表于 2009-04-15 13:09 ·  中国 北京 海淀区 联通
银牌会员
★★★
积分 2,098
发帖 566
注册 2007-09-11 07:27
18年会员
UID 97070
性别 男
状态 离线

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
3 发表于 2009-04-15 14:27 ·  中国 江苏 苏州 有线通(移动出口)
初级用户
积分 29
发帖 16
注册 2005-11-15 16:39
20年会员
UID 45306
状态 离线
非常感谢!!!
4 发表于 2009-04-15 22:45 ·  中国 广东 广州 电信
初级用户
★★
l i u s s
积分 73
发帖 101
注册 2008-09-17 00:21
17年会员
UID 125825
性别 男
来自 GZ
状态 离线
对 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 ]
5 发表于 2009-04-17 10:57 ·  中国 江苏 苏州 有线通(移动出口)
初级用户
积分 29
发帖 16
注册 2005-11-15 16:39
20年会员
UID 45306
状态 离线
感谢楼上热心的解答
6 发表于 2009-04-17 11:09 ·  中国 江苏 苏州 有线通(移动出口)
初级用户
积分 29
发帖 16
注册 2005-11-15 16:39
20年会员
UID 45306
状态 离线
不过上面的批处理达不到预期效果,我是想要后台播放,不显示界面

[ Last edited by knight1006 on 2009-4-17 at 11:14 ]
论坛跳转: