簡體   English   中英

'將第一個文本行(行)C:\\ Alexander.txt發送到C:\\ Test.vbs到行(行)n並替換

[英]'Send the first text line (row) C:\Alexander.txt to C:\Test.vbs to Line (row) n and replace

'我有兩個文件

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第四行,將360.5替換為234.6656

 '

'示例單擊1: 234.6656將文本發送到C:\\ Test.vbs第四行,將360.5替換為234.6656

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

'發送到C:\\ Test.vbs之后,刪除C:\\ Alexander.txt中的第一行(行)

' C:\\ Alexander.txt將第一行文本(行)發送到C:\\ Test.vbs第四行,將234.6656替換為-123.48872

 '

'示例點擊2: -123.48872將文本發送到C:\\ Test.vbs第4行,將234.6656替換為-123.48872

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

'發送到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進行替換。

我需要您的幫助非常感謝您的幫助。

嘗試這個!

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. .ReadLine()第一行(如果文件存在並且不為空)
  2. .ReadAll()剩余的行(如果有)
  3. 將此尾巴(可能是空的)寫到輸入文件中

帶有移位的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}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM