Board logo

标题: [问题求助] 求修改VBS代码:读取TXT第一行到剪贴板,并删除该TXT第一行(合并同类项) [打印本页]

作者: 我来了    时间: 2013-5-11 10:59     标题: 求修改VBS代码:读取TXT第一行到剪贴板,并删除该TXT第一行(合并同类项)

原因是这样的。我用按键精灵编了一个小程序。
(由于TXT文件有点大,结果用按键编出来的程序,读取的时候速度太慢,换成了VBS的代码简直就像飞。。。,罪过,又说了不少费话。
我想让它中转一下,所以出现上面的题目:

这个是按行读取的

On Error Resume Next
    strFileName = "H:\列表.txt"
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFile = oFSO.OpenTextFile(strFileName)

    If Err Then
        WScript.Echo Err.Number & vbCrLf & Err.Description
        Err.Clear
        WScript.Quit
    End If
   
    Do Until oFile.AtEndOfLine
        WScript.Echo oFile.ReadLine
    Loop


这个是随机读取一行的:

randomize
set fso = CreateObject("Scripting.Filesystemobject")
set a = CreateObject("Scripting.Dictionary")
set file = fso.OpenTextFile("G:\读取的.txt")
do while file.AtendofStream<>true
        m = m + 1
        a.add m,file.readline
loop
file.close
h=int(rnd * m)

CreateObject("WScript.Shell").Run "G:\nircmd.exe clipboard set " & chr(34) & a(h) & chr(34)这段中,我只对这句感兴趣。


帮助我修改下VBS代码:
最后只要做到:
读取c:\test.txt第一行到剪贴板,并删除该TXT第一行,就算OK了。


只因学生太饭桶~~~,老师见笑了~~
作者: Demon    时间: 2013-5-11 11:15

发错版块了
作者: 我来了    时间: 2013-5-11 11:18

回复 2# Demon

罪过,罪过,主儿啊,饶恕我的无知吧。
作者: sz1121    时间: 2013-5-11 17:18

exe的行不?
作者: 我来了    时间: 2013-5-11 18:37

最好原VBS基础上改改。

不过先发上来应下急也行。
作者: apang    时间: 2013-5-11 19:19

本帖最后由 apang 于 2013-5-11 19:28 编辑
  1. strFileName = "d:\test.txt"
  2. Set ws = CreateObject("WScript.Shell")
  3. Set fso = CreateObject("Scripting.FileSystemObject")
  4. Set file  = fso.OpenTextFile(strFileName,1)
  5. ws.Run "G:\nircmd.exe clipboard set "&chr(34)&file.ReadLine&chr(34),,True
  6. Do Until file.AtEndOfStream
  7.    str = str & file.ReadLine & vbCrLf
  8. Loop
  9. file.close
  10. fso.OpenTextFile(strFileName,2).Write str
  11. MsgBox "OK"
复制代码

作者: 我来了    时间: 2013-5-11 19:54

本帖最后由 我来了 于 2013-5-11 20:16 编辑

谢谢楼上,
我把最后一句去了。
成功是成功了,但有个后遗症:进程中有大量的脚本未停止  从内存中释放啊。。。
作者: 我来了    时间: 2013-5-11 20:15

Dim fso,openFile
Set fso=CreateObject("Scripting.FileSystemObject")
Set openFile=fso.OpenTextFile("c:\软件名1.txt",1,True)
a=openFile.Readline
str=a
Set ws = wscript.createobject("wscript.shell")
ws.run "mshta vbscript:clipboardData.SetData("+""""+"text"+""""+","+""""&str&""""+")(close)",0,true
Text = CreateObject("scripting.filesystemobject").opentextfile("c:\软件名1.txt").readall
txtArray = Split(Text,vbcrlf)
Text = Replace(Text, txtArray(0) & vbcrlf, "")
const forwriting=2
set writefile=fso.opentextfile("c:\软件名1.txt",forwriting)
writefile.writeline(Text)
writefile.close

上边这个是我从另外一个论坛得到的代码,不存在上面的问题,发上来,
学习下。
但读取下面的文本:
BMPArray = Plugin.BGCP2_02.LoadBMP("D:\pic\1.bmp|D:\pic\2.bmp|D:\pic\3.bmp")
For i = 0 To UBound(BMPArray)
TracePrint         BMPArray(i)
Next


就会报错。


希望大帅出手,让两个均一百分。
作者: apang    时间: 2013-5-11 21:02

进程中有大量的脚本未停止  从内存中释放啊。。。


不明白什么意思。最后一句是显示"OK"的对话框,点击“确定”后WScript.exe进程就会消失。
作者: sz1121    时间: 2013-5-11 21:04



http://url.cn/FNfzj3
作者: 我来了    时间: 2013-5-11 21:20

回复 9# apang

WScript.exe是的,就是它在内存中有好多个,希望运行完了,马上结束。

所以,我直接把最后 一句弹框的给去掉了。
作者: 我来了    时间: 2013-5-11 21:23

回复 10# sz1121


    大哥啊,我的目的是为了在按键精灵中调用结果,你这个在软件中,我还得搞个wm_command事件,或再抓取。。。就太麻烦了。
作者: sz1121    时间: 2013-5-13 17:00

回复 12# 我来了

还没解决???
  1. Set clip=CreateObject("application.clipboard")
  2. clip.ShowMode=&HF0F0
  3. WScript.Echo clip.Clip("D:\abc.txt",1)
复制代码
'第一个参数为文件路径
'第二个参数为行数




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