![](/img/trans.png)
[英]Output each line of text (+ the first line) to its own .txt file VBS-Script
[英]'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
解決任務“讀取文本文件的第一行並將其刪除”的正確方法是:
帶有移位的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.