标题: [问题求助] [已解决]VBS如何自动复制剪切板文本并分行保存一个txt? [打印本页]
作者: 1139054012 时间: 2015-5-15 00:17 标题: [已解决]VBS如何自动复制剪切板文本并分行保存一个txt?
剪切板文本是随时在变,希望能自动将每次改变的剪切板文本分行复制到指定txt里。
本人有个习惯,喜欢看到喜欢的文章复制到txt里,每次都要打开txt再复制,太花时间,所以,请大神帮助。能使用VBS自动复制剪切板的文本输出到指定txt并保存,让小弟方便些。谢谢
希望另外再有个停止复制剪切板文本复到txt的VBS就更好了。可以随时停止自动保存txt。
作者: CrLf 时间: 2015-5-15 03:44
存为 hta- <HTA:APPLICATION SCROLL="no" />
- <title>自动保存</title>
-
- <script src=http://www.bathome.net/lib/diy/Function.js></script>
- <script src=http://www.bathome.net/lib/jquery.js></script>
-
- <script>
- var basetext = clipboardData.getData('text');
- var id = 0
-
- window.resizeTo(300,100)
-
- function start(){
- id = setInterval('autoSaveClipBoard()',100)
- $('button')[0].innerHTML = '单击开始保存'
- }
-
- function stop(){
- clearInterval(id)
- id=0
- $('button')[0].innerHTML = '单击停止保存'
- }
-
- function autoSaveClipBoard(){
- var cliptext = clipboardData.getData('text');
-
- if(basetext !== cliptext && /\S/.test(cliptext)){
- basetext = cliptext
-
- var title = basetext.replace(/^\s+/,'')
- .split(/\n/,1)[0].replace(/\s+$/g,'')
- .replace(/\\/g,'\')
- .replace(/\//g,'/')
- .replace(/:/g,':')
- .replace(/\*/g,'*')
- .replace(/\?/g,'?')
- .replace(/"/g,'"')
- .replace(/\</g,'《')
- .replace(/\>/g,'》')
- .replace(/\|/g,'|')
-
- save(basetext,title+'.txt',1)
-
- $('button')[0].innerHTML = '<pre>已保存:\n"'+title.replace(/&/g,'&')+'.txt"</pre>'
- }
- }
- </script>
-
- <body style='height:100%;margin:0px'>
- <button
- onclick='id?stop():start()'
- style='height:100%;width:100%;'>
- 单击开始保存
- </button>
- </body>
复制代码
作者: CrLf 时间: 2015-5-15 04:29
这种事怎能少了 ahk
来一个 ahk 的脚本,ScrLk 开启时自动保存,按 Win+Esc 可退出脚本:- #SingleInstance force
-
- loop{
- clipwait
-
- state := GetKeyState("Scrolllock", "T")
- traytip,, %state%
- if State
- {
- traytip,, %A_Now%.txt
- FileAppend, %ClipBoard%, %A_Now%_.txt, UTF-8
- ClipBoard =
- }
- }
-
- #ESC::
- ExitApp
复制代码
ahk 的另一个方案,只在按下 Win+C 时触发另存:- #SingleInstance force
-
- #c::
- send ^c
- traytip,, %A_Now%.txt
- FileAppend, %ClipBoard%, %A_Now%_.txt, UTF-8
复制代码
作者: 1139054012 时间: 2015-5-15 14:41
本帖最后由 1139054012 于 2015-5-15 14:47 编辑
回复 2# CrLf
感谢,您真是雪中送炭,超需要这代码。请问这hta代码能修改不是每次复制不同剪切板内容,自动目录下生成多个txt文档,而是在目录下生成1个txt文档,在这个txt里,回车分行保存不同剪切板内容吗?
举个例子,比如我先复制的是【你是谁?】,后来再复制【这是一个故事。】
保存在txt里的内容是复制代码
这样的格式呢?
作者: 1139054012 时间: 2015-5-15 14:57
本帖最后由 1139054012 于 2015-5-15 15:57 编辑
回复 3# CrLf
另外我下载了AutoHotkey,将以两个代码分别放到txt文档,改后缀.ahk。使用Ahk2Exe选择ank文件,Convert生成exe,双击运行,复制内容,目录下没生成什么txt文档?没反应。难道是我操作不对?
作者: CrLf 时间: 2015-5-15 15:47
回复 5# 1139054012
两个 ahk 代码有条件:
第一个只在ScrLk 开启时自动保存
第二个只在按下 Win+C 时触发另存
作者: CrLf 时间: 2015-5-15 15:50
只追加保存在一个文件中的 hta,如未选择另存的路径,默认保存在 "自动保存.txt"- <HTA:APPLICATION SCROLL="no"/>
- <title>自动保存</title>
-
- <script defer>
- var basetext = clipboardData.getData('text');
- var IntervalId = 0
-
- window.resizeTo(300,100)
-
- var file = document.getElementById('file')
- var button = document.getElementById('button')
- button.innerHTML = '开始保存'
-
- function start(){
- IntervalId = setInterval('autoSaveClipBoard()',100)
- button.innerHTML = '开始保存'
- }
-
- function stop(){
- clearInterval(IntervalId)
- IntervalId=0
- button.innerHTML = '停止保存'
- }
-
- function append(strText,strFilePath, bFormat){
- var fso = new ActiveXObject('Scripting.FileSystemObject')
- var ts = fso.OpenTextFile(strFilePath, 8, true, bFormat)
- ts.Write(strText)
- ts.Close()
- }
-
- function autoSaveClipBoard(){
- var cliptext = clipboardData.getData('text');
-
- if(basetext !== cliptext && /\S/.test(cliptext)){
- basetext = cliptext
- var filepath = file.value ? file.value : '自动保存.txt'
- append(basetext.replace(/\r?\n/g,'\r\n')+'\r\n', filepath, true)
- }
- }
- </script>
-
- <body style='height:100%;margin:0px;'>
-
- <input id='file' type='file'
- onchange='filepath=this.value'
- style='width:100%;' />
-
- <button id='button'
- onclick='IntervalId?stop():start()'
- style='height:50;width:100%;' />
-
- </body>
复制代码
作者: 1139054012 时间: 2015-5-15 16:22
本帖最后由 1139054012 于 2015-5-15 16:25 编辑
回复 7# CrLf
太感谢了,这个可行。感谢您的热心帮助
作者: 1139054012 时间: 2015-5-15 21:20
本帖最后由 1139054012 于 2015-5-15 21:28 编辑
回复 7# CrLf
您好,我这出现一个问题,能再请教下吗?如果把hta打包exe后,生成的txt就会在Temp文件夹下,有没方法让生成的txt在打包的exe目录下呢?
或有什么hta打包exe方法或软件,能够不用生成临时文件夹,直接在目录下生成txt保存呢?
或能将上面代码修改成能够自定义路径,生成文件夹,在文件夹下保存【自动保存.txt】吗?比如桌面下,盘符下这样,然后自定义生成文件夹并保存txt吗?
作者: CrLf 时间: 2015-5-15 22:32
为毛要打包
作者: 1139054012 时间: 2015-5-16 05:34
回复 10# CrLf
因为个人比较喜欢exe可执行文件,可以任意更换ico图标。所以无论是bat还是vbs我都是打包exe后使用。终于找到打包hta的软件,没想到是生成临时文件的类型,导致这次的exe打包失去了意义
作者: zhangop9 时间: 2021-1-1 00:17
记录一下 自动保存
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |