标题: [文件操作] 批处理能监控剪贴板吗?当剪贴板的内容存在特定字符串则执行指定操作或程序 [打印本页]
作者: hentai87 时间: 2016-7-21 08:45 标题: 批处理能监控剪贴板吗?当剪贴板的内容存在特定字符串则执行指定操作或程序
本帖最后由 pcl_test 于 2016-7-21 13:43 编辑
比如复制了123,剪贴板改变了,执行1.bat,1bat来判断剪贴板内容=123就把123改成321
复制了32643736930,剪贴板改变了,执行1.bat,1bat来判断剪贴板内容=11位数字,就在11位数字前面加www.xxxx.
等等
要是能实现,应用范围就很广了,用途很大
我搜不到类似的内容,找不到办法
作者: pcl_test 时间: 2016-7-21 09:11
“判断剪贴板内容=123就把123改成321” 什么规律,只是判断123一个数字?
作者: hentai87 时间: 2016-7-21 09:14
回复 2# pcl_test
第一个例子是判断固定字符
第二个例子是判断固定位数的数字
不过问题的关键是监控剪贴板,监控不了的话,判断也没用。。
作者: hentai87 时间: 2016-7-21 09:59
- mshta "javascript:var s=clipboardData.getData('text');if(s)new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(s);close();"|more >temp1.txt
- ping 127.0.0.1 -n 3
- mshta "javascript:var s=clipboardData.getData('text');if(s)new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(s);close();"|more >temp2.txt
- :对比temp1.txt和temp2.txt
- !@#!@¥%%……&&
- del temp1.txt
- xcopy temp2.txt temp1.txt
- del temp2.txt
复制代码
啊,这样感觉效率还不如直接一直不断判断剪贴板呢
作者: pcl_test 时间: 2016-7-21 10:04
保存为hta文件,运行后当复制了符合条件的数据,直接粘贴即可- <script>
- window.resizeTo(180,80);
- var str = '123';
- var prefix = 'www.xxxx.';
- function getclip(){
- try{
- var cliptxt = clipboardData.getData('text').replace(/^[ \s]*|[ \s]*$/, '');
- if(cliptxt==str){
- clipboardData.setData('text', '321');
- } else if(/^\d{11}$/.test(cliptxt))clipboardData.setData('text', prefix + cliptxt);
- }catch(e){}
- setTimeout('getclip()', 500);
- }
- </script>
- <body style='text-align:center' onload='getclip()'>剪贴板监控中</body>
复制代码
作者: hentai87 时间: 2016-7-21 10:11
本帖最后由 hentai87 于 2016-7-21 10:13 编辑
回复 5# pcl_test
能用bat吗,看不懂,321写在哪个语句了- -
作者: tmplinshi 时间: 2016-7-21 15:04
本帖最后由 tmplinshi 于 2016-7-21 15:15 编辑
去下载安装一个 AutoHotkey- #NoEnv
- #Persistent
-
- return
-
- OnClipboardChange:
- if (A_EventInfo != 1) { ; 剪贴板数据的类型不是字符则返回
- return
- }
-
- if (Clipboard = "123") {
- Clipboard := "321"
- } else if RegExMatch(Clipboard, "^\d{11}$") {
- Clipboard := "www.xxxx." Clipboard
- }
- return
复制代码
作者: GNU 时间: 2016-7-21 15:28
- @echo off
- setlocal enabledelayedexpansion
- set PSCMD=powershell -c "Add-Type -AssemblyName PresentationCore; [Windows.Clipboard]::GetText()"
- :CheckClip
- for /f "delims=" %%i in ('%PSCMD%') do (
- set "strClip=%%i"
- )
- if "!strClip!" equ "123" (
- echo 321
- pause
- goto :eof
- )
- timeout /nobreak /t 3 >nul
- goto :CheckClip
复制代码
作者: hentai87 时间: 2016-7-21 15:43
回复 8# GNU
结果能直接输出到剪贴板吗,最好是一直循环,而不是一次就结束
作者: pcl_test 时间: 2016-7-21 15:58
回复 6# hentai87
5L已改
作者: hentai87 时间: 2016-7-21 16:42
本帖最后由 pcl_test 于 2016-7-21 17:03 编辑
回复 10# pcl_test
懂了,但是我昨天帖子那2个列子怎么改,有点不一样,有多行,经验不够多,不是几乎相似的不会举一反三
http://www.bathome.net/viewthrea ... mp;extra=#pid187992
作者: pcl_test 时间: 2016-7-21 17:26
本帖最后由 pcl_test 于 2016-7-21 17:28 编辑
完善下8L的powershell代码- while(1)
- {
- $str = [Windows.Clipboard]::GetText()
- if($str -eq "123")
- {
- [Windows.Clipboard]::SetText("321")
- } else {
- if($str -match "^\d{11}$"){[Windows.Clipboard]::SetText("www.xxxx."+$str)}
- }
- Start-Sleep -Seconds 1
- }
复制代码
作者: hentai87 时间: 2016-7-22 08:08
回复 12# pcl_test
11楼的怎么弄- -
作者: hentai87 时间: 2016-7-22 08:55
回复 12# pcl_test
这个代码写在8楼的哪个位置?- -
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |