中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-02 02:24
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 有什么办法使变量获得剪贴板的内容? 查看 1,275 回复 3
楼 主 有什么办法使变量获得剪贴板的内容? 发表于 2006-05-31 16:38 ·  中国 广东 汕头 电信
初级用户
积分 135
发帖 49
注册 2006-04-28 10:01
20年会员
UID 54589
状态 离线
在XP下,有什么办法使变量获得剪贴板的内容(如%TM%的内容为剪贴板的内容)?

仅限文本。
2 发表于 2006-05-31 18:31 ·  IANA 局域网IP(Private-Use)
铂金会员
★★★★
积分 7,493
发帖 2,672
注册 2005-09-02 00:00
20年会员
UID 42173
性别 男
状态 离线
可以用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'>"
3 发表于 2006-05-31 20:45 ·  中国 湖北 荆门沙洋区 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
20年会员
UID 50550
状态 离线
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来输出内容。
4 发表于 2006-09-07 01:57 ·  中国 四川 成都 教育网
铂金会员
★★★★
积分 7,493
发帖 2,672
注册 2005-09-02 00:00
20年会员
UID 42173
性别 男
状态 离线
由于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'>"
论坛跳转: