中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 有什么办法使变量获得剪贴板的内容?
作者:
标题: 有什么办法使变量获得剪贴板的内容? 上一主题 | 下一主题
tmt2006
初级用户





积分 135
发帖 49
注册 2006-4-28
状态 离线
『楼 主』:  有什么办法使变量获得剪贴板的内容?

在XP下,有什么办法使变量获得剪贴板的内容(如%TM%的内容为剪贴板的内容)?

仅限文本。

2006-5-31 16:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
electronixtar
铂金会员





积分 7493
发帖 2672
注册 2005-9-2
状态 离线
『第 2 楼』:  

可以用script+DOM实现,具体方法为:
echo wscript.echo CreateObject("InternetExplorer.Application").clipboardData.getData "text" >temp$$$.vbs
cscript temp$$$.vbs
del /f /q temp$$$/vbs

由于我的cscript说class unregistered,所以没测试,可能有bug,但思路就是这样子的。仅供参考。




C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
2006-5-31 18:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 3 楼』:  

Well,在electronixtar的脚本中,可能存在一点小错:创建了internetexplorer对象后,并没有打开一个实例(允许我用这个我认为最贴切的词),所以就无法调用internetexplorer对象的document.parentwindow.clipboardData子对象的getdata方法,所以可能导致无法正确获得剪贴板内容。
     在electronixtar提供的方法中,首先用bat写代码到一vbs脚本,然后在vbs脚本中又调用了IE对象,可谓是山路十八弯,因此,建议楼主尝试用vbs脚本来解决所想解决的问题。关于在vbs中获得剪贴板内容的方法:
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Navigate("about:blank")
str = objIE.document.parentwindow.clipboardData.GetData("text")
WScript.Echo str
如果搂主确需用bat来实现的话,可以在用echo把以上代码写到临时文件后,在批处理中用for+cscript //NOLOGO来获得内容到变量中,另外就是建议在vbs中用WScript.StdOut.Write来输出内容。

2006-5-31 20:45
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
electronixtar
铂金会员





积分 7493
发帖 2672
注册 2005-9-2
状态 离线
『第 4 楼』:  

由于InternetExplorer.Application要影响 Maxthon 等截获IE调用的浏览器,所以一直觉得不爽,最近发现了一个新的COM能方便调用剪贴板:
@echo off
@echo WScript.StdOut.Write(new ActiveXObject('htmlfile').parentWindow.clipboardData.getData('text'))> tmp.js 2>nul
@for /f "delims=" %%a in ('cscript //Nologo tmp.js') do @set ClipboardText=%%a >nul 2>nul
@del tmp.js /f /q >nul 2>nul
@echo %ClipboardText%
还是要输出临时文件,效率奇低。什么时候找一个能StdOut的COM就爽了

[ Last edited by electronixtar on 2006-9-7 at 02:01 ]




C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
2006-9-7 01:57
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: