Board logo

标题: [文本处理] 批处理如何读取剪切板内容并赋值? [打印本页]

作者: mokson    时间: 2024-6-26 09:58     标题: 批处理如何读取剪切板内容并赋值?

东拼西凑的代码,我弄很久没有成功。
文本是成功复制到剪切板了,但就是粘贴不出来。
帮我改改,谢谢!
  1. Set /p "T=自定义剪切板文本内容:"
  2. FOR /F "usebackq tokens=* delims=" %%U in (`mshta vbscript:clipboarddata.setdata^("text"^,"%T%"^)^(close^) 2^<nul`) Do Set "TT=%%U"
  3. FOR /F "usebackq tokens=* delims=" %%U in (`mshta vbscript:clipboarddata.getdata^("text"^)^(close^) 2^<nul`) Do Set "TT=%%U"
  4. echo %TT%
复制代码

作者: Five66    时间: 2024-6-26 10:19

powershell -c " get-clipboard -raw"

powershell 5.1 , 注意多行问题
作者: buyiyang    时间: 2024-6-26 10:53

  1. Set /p "T=自定义剪切板文本内容:"
  2. mshta vbscript:clipboarddata.setdata^("text","%T%")(close)
  3. FOR /F "delims=" %%U in ('mshta VBScript:Execute("CreateObject(""Scripting.Filesystemobject"").GetStandardStream(1).Write(clipboarddata.getdata(""text""))"^)(close^)') Do Set "TT=%%U"
  4. echo %TT%
复制代码

作者: mokson    时间: 2024-6-26 11:19

回复 2# Five66

非常感谢你的回复,但是因为考虑到我的电脑没有安装 powershell ,我不想用 powershell ,只想用纯属 bat 去实现呀。
作者: aloha20200628    时间: 2024-6-26 11:40

本帖最后由 aloha20200628 于 2024-6-26 15:01 编辑

回复 1# mokson
  1. @set @x=1 /* &@echo off
  2. set/p "t=自定义剪切板文本内容:"
  3. set/p="%t%"<nul|clip &for /f "delims=" %%t in (' cscript /e:jscript "%~f0" ') do echo,"%%t"
  4. pause&exit/b */
  5. hf=WSH.createobject('htmlfile'),ct=hf.parentWindow.clipboardData.getData('text'),WSH.echo(ct);
复制代码

代码存为test.bat运行,实测mshta调用设置剪贴板内容的功能不稳定,可改用clip命令为宜,且批处调用mshta代码会用闪屏"致敬"。

作者: mokson    时间: 2024-6-26 11:45

回复 3# buyiyang 成功了,代码有点长,我想想有没有方法精简一下。非常多谢。
作者: 77七    时间: 2024-6-26 12:03

可以试试 第三方工具 winclip ,命令简单好记,调用速度我感觉挺快的
支持命令行调用的剪贴板工具winclip.exe
作者: mokson    时间: 2024-6-26 16:12

如5楼兄台所说,调用mshta会闪屏,我还是放弃了这种方式去获取剪切板内容。但还是非常感谢大家的帮助。
我最终还是选择了用第三方工具。如7楼兄台推荐的 winclip,或者 nircmd。
用 nircmd 的话,用 nircmd execmd echo ~$clipboard$ ,或 nircmd consolewrite ~$clipboard$ 都可以轻易实现。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2