'将第一个文本行(行)C:\ Alexander.txt发送到C:\ Test.vbs到行(行)n并替换

时间:2014-08-24 12:15:24

标签: vbscript adsutil.vbs

'我有两个文件

C:\Alexander.txt and C:\Test.vbs

'在C:\ Alexander.txt中是数字列表。

234.6656       
-123.48872
456.75555 
345.56777853
-777.4455666
778.522222245
Etc. in down more.

'在C:\ Test.vbs中是脚本命令。

WshShell.SendKeys "{TAB}"
WScript.Sleep 1
WshShell.SendKeys "{TAB}"
WScript.Sleep 1
WshShell.SendKeys "360.5"
WScript.Sleep 1
WshShell.SendKeys "{TAB}"
WScript.Sleep 1
WshShell.SendKeys "{TAB}"
WScript.Sleep 1

我想制作。

' C:\ Alexander.txt 将第一个文本行(行)发送到 C:\ Test.vbs 第四行用234.6656替换360.5

 '

'示例点击1: 234.6656发送文字到 C:\ Test.vbs 第四行用234.6656替换360.5

(or another line to be able modify the line by me)

'发送到 C:\ Test.vbs 后删除 C:\ Alexander.txt

中的第一行(行)

&#39; C:\ Alexander.txt 将第一个文本行(行)发送到 C:\ Test.vbs 第四行用-123.48872替换234.6656 < / p>

 '

&#39;示例点击2: -123.48872发送文字到 C:\ Test.vbs 第四行用-123.48872替换234.6656

(or another line to be able modify the line by me)

&#39;发送到 C:\ Test.vbs 后删除 C:\ Alexander.txt

中的第一行(行)
  Click Your.vbs Send and replace in C:\Test.vbs (one by one (to click mouse)
 'example click 1 Your.vbs: 234.6656
 'example click 2 Your.vbs: -123.48872
 'example click 3 Your.vbs: 456.75555
 'example click 4 Your.vbs: 345.56777853
 'example click 5 Your.vbs: -777.4455666
 'example click 6 Your.vbs: 778.522222245
 'example click 7 Your.vbs: Etc. to end last line C:\Alexander.txt**

在C:\ Test.vbs中替换后删除C:\ Alexander.txt中的第一个文本行(行)

我想每次点击鼠标到 Your.vbs ,将第一个文本行号C:\ Alexander.txt发送到Test.vbs来替换....

我需要你的帮助 非常感谢你的帮助。

2 个答案:

答案 0 :(得分:0)

试试这个!

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFileAlexRead = objFSO.OpenTextFile("C:\Alexander.txt", 1)

strTextAlex = objFileAlexRead.ReadAll
arrFileTextAlex = Split(strTextAlex,Chr(10))
objFileAlexRead.Close

Set objFileTest = objFSO.OpenTextFile("C:\Test.vbs", 1)
strTextTest = objFileTest.ReadAll

Set regEx = New RegExp
  regEx.Pattern = """(-*)\d+.\d+\"""
  regEx.IgnoreCase = True

ReplaceTest = regEx.Replace(strTextTest, """" & Trim(Replace(arrFileTextAlex(0), vbCr, "")) & """")
objFileTest.Close


Const removalIndex = 0
For x=removalIndex To UBound(arrFileTextAlex)-1
    arrFileTextAlex(x) = arrFileTextAlex(x + 1)
Next
ReDim Preserve arrFileTextAlex(UBound(arrFileTextAlex) - 1)

Set objFileAlexWrite = objFSO.OpenTextFile("C:\Alexander.txt", 2)
dim i
For i = lbound(arrFileTextAlex) to ubound(arrFileTextAlex)  
        objFileAlexWrite.writeline arrFileTextAlex(i)  
    Next  
objFileAlexWrite.Close

Set objFileTestWrite = objFSO.OpenTextFile("C:\Test.vbs", 2)
objFileTestWrite.writeline ReplaceTest
objFileTestWrite.Close

答案 1 :(得分:0)

正确解决任务的方法“读取文本文件的第一行并将其删除”是:

  1. .ReadLine()第一行(如果文件存在且不为空)
  2. .ReadAll()剩下的行(如果有的话)
  3. 。将此(可能为空)尾部写入输入文件
  4. 使用移动的redim-ed数组的整个过程就是这样。

    试验代码:

    Option Explicit
    
    Const csFSpec = "..\data\25471573.txt"
    
    Dim goFS : Set goFS = CreateObject("Scripting.FileSystemObject")
    
    Select Case True
      Case Not goFS.FileExists(csFSpec)
        WScript.Echo csFSpec, "does not exist. Will create an empty file."
        goFS.CreateTextFile csFSpec
      Case 0 = goFS.GetFile(csFSpec).Size
        WScript.Echo csFSpec, "is empty. Will fill it with 3 lines."
        goFS.CreateTextFile(csFSpec).WriteLine Replace("A B C", " ", vbCrLf)
      Case Else
        Dim tsIn : Set tsIn = goFS.OpenTextFile(csFSpec)
        If tsIn.AtEndOfStream Then
           WScript.Echo "surprise - tsIn.AtEndOfStream"
        Else
           Dim sLine : sLine = tsIn.ReadLine()
           WScript.Echo "doing something interesting with", sLine
           Dim sTail : sTail = ""
           If tsIn.AtEndOfStream Then
              WScript.Echo "done with", csFSpec
           Else
              sTail = tsIn.ReadAll()
           End If
           tsIn.Close
           goFS.CreateTextFile(csFSpec).Write sTail
        End If
    End Select
    

    输出:

    cscript 25471573.vbs
    ..\data\25471573.txt does not exist. Will create an empty file.
    cscript 25471573.vbs
    ..\data\25471573.txt is empty. Will fill it with 3 lines.
    cscript 25471573.vbs
    doing something interesting with A
    cscript 25471573.vbs
    doing something interesting with B
    cscript 25471573.vbs
    doing something interesting with C
    done with ..\data\25471573.txt
    
    cscript 25471573.vbs
    ..\data\25471573.txt is empty. Will fill it with 3 lines.
    
    ... ad infitum
    

    让脚本执行一组简单的不同操作的正确方法是将一些参数传递给它。重写代码真是荒谬。

    代码:

    Option Explicit
    
    Dim sCode : sCode = "305.77"
    If 1 <= WScript.Arguments.Count Then sCode = WScript.Arguments(0)
    Dim aCodes : aCodes = Split("{TIB} {TAB} X {TUB} {TOB}")
    aCodes(2) = sCode
    
    For Each sCode In aCodes
        WScript.Echo "if I would touch Sendkeys with a long pole, i wound send:", sCode
        WScript.Sleep 100
    Next
    

    输出:

    cscript 25471573-2.vbs
    if I would touch Sendkeys with a long pole, i wound send: {TIB}
    if I would touch Sendkeys with a long pole, i wound send: {TAB}
    if I would touch Sendkeys with a long pole, i wound send: 305.77
    if I would touch Sendkeys with a long pole, i wound send: {TUB}
    if I would touch Sendkeys with a long pole, i wound send: {TOB}