替换“|”使用“,”使用 VB 脚本
Replacing "|" with "," using VB Script
Dim sFile
sFile = "File Name"
Dim RecCount
Set objFSO = CreateObject("Scripting.FileSystemObject")
RecCount = 1
Set objFileRead = objFSO.OpenTextFile(sFile,1)
Do Until objFileRead.AtEndOfStream
'Set objFileRead = objFSO.OpenTextFile(sFile,RecCount)
'RecCount = RecCount + 1
text = objFileRead.ReadLine
set objFileWrite = objFSO.OpenTextFile(sFile,2)
objFileWrite.WriteLine(replace(text, "|", ","))
' objFileRead.close
RecCount = RecCount + 1
loop
objFileRead.close
objFileWrite.Close
Msgbox " files processed"
此代码仅更改第一行并擦除其余的 2000
线。
循环中有什么要更改的吗?
请帮助
您不能使用 ReadLine
和 WriteLine
方法替换整个文件内容。如下创建另一个输出文件:
Option Explicit
Dim sFile, sFileOut
sFile = "D:\pshell\SO\Journals\test2.csv"
sFileOut = "D:\pshell\SO\Journals\test2Comma.csv"
Dim RecCount, objFSO, objFileRead, objFileWrite, text
Set objFSO = CreateObject("Scripting.FileSystemObject")
RecCount = 0
Set objFileRead = objFSO.OpenTextFile(sFile,1)
Set objFileWrite = objFSO.OpenTextFile(sFileOut,2,true)
Do Until objFileRead.AtEndOfStream
text = objFileRead.ReadLine
objFileWrite.WriteLine(replace(text, "|", ","))
RecCount = RecCount + 1
Loop
objFileRead.Close
objFileWrite.Close
Wscript.Echo "records processed " & CStr( RecCount)
输出:
cscript //NoLogo D:\bat\SO676742.vbs && type "D:\pshell\SO\Journals\test2*.csv"
records processed 8
D:\pshell\SO\Journals\test2.csv
"Name"|"AtBats"|"Hits"
"Ken Myer Jr."|"43"|"13"
"Pilar Ackerman"|""|"11"
"Jonathan Haas"|"37"|"17"
D:\pshell\SO\Journals\test2Comma.csv
"Name","AtBats","Hits"
"Ken Myer Jr.","43","13"
"Pilar Ackerman","","11"
"Jonathan Haas","37","17"
作为替代方案,使用 ReadAll
和 Write
方法来替换整个文件内容,如下所示:
Option Explicit
Dim sFile
sFile = "D:\pshell\SO\Journals\test62676742.csv"
Dim RecCount, objFSO, objFileRead, objFileWrite, text
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFileRead = objFSO.OpenTextFile(sFile,1)
text = objFileRead.ReadAll
objFileRead.Close
Set objFileWrite = objFSO.OpenTextFile(sFile,2,true)
objFileWrite.Write(replace(text, "|", ","))
objFileWrite.Close
Wscript.Echo "file processed"
Output(初始copy
重新建立输入文件带˙|˙竖线):
copy /Y "D:\pshell\SO\Journals\test2.csv" "D:\pshell\SO\Journals\test62676742.csv"
1 file(s) copied.
cscript //NoLogo D:\bat\SO676742b.vbs && type "D:\pshell\SO\Journals\test6*.csv"
file processed
D:\pshell\SO\Journals\test62676742.csv
"Name","AtBats","Hits"
"Ken Myer Jr.","43","13"
"Pilar Ackerman","","11"
"Jonathan Haas","37","17"
Dim sFile
sFile = "File Name"
Dim RecCount
Set objFSO = CreateObject("Scripting.FileSystemObject")
RecCount = 1
Set objFileRead = objFSO.OpenTextFile(sFile,1)
Do Until objFileRead.AtEndOfStream
'Set objFileRead = objFSO.OpenTextFile(sFile,RecCount)
'RecCount = RecCount + 1
text = objFileRead.ReadLine
set objFileWrite = objFSO.OpenTextFile(sFile,2)
objFileWrite.WriteLine(replace(text, "|", ","))
' objFileRead.close
RecCount = RecCount + 1
loop
objFileRead.close
objFileWrite.Close
Msgbox " files processed"
此代码仅更改第一行并擦除其余的 2000 线。 循环中有什么要更改的吗? 请帮助
您不能使用 ReadLine
和 WriteLine
方法替换整个文件内容。如下创建另一个输出文件:
Option Explicit
Dim sFile, sFileOut
sFile = "D:\pshell\SO\Journals\test2.csv"
sFileOut = "D:\pshell\SO\Journals\test2Comma.csv"
Dim RecCount, objFSO, objFileRead, objFileWrite, text
Set objFSO = CreateObject("Scripting.FileSystemObject")
RecCount = 0
Set objFileRead = objFSO.OpenTextFile(sFile,1)
Set objFileWrite = objFSO.OpenTextFile(sFileOut,2,true)
Do Until objFileRead.AtEndOfStream
text = objFileRead.ReadLine
objFileWrite.WriteLine(replace(text, "|", ","))
RecCount = RecCount + 1
Loop
objFileRead.Close
objFileWrite.Close
Wscript.Echo "records processed " & CStr( RecCount)
输出:
cscript //NoLogo D:\bat\SO676742.vbs && type "D:\pshell\SO\Journals\test2*.csv"
records processed 8 D:\pshell\SO\Journals\test2.csv "Name"|"AtBats"|"Hits" "Ken Myer Jr."|"43"|"13" "Pilar Ackerman"|""|"11" "Jonathan Haas"|"37"|"17" D:\pshell\SO\Journals\test2Comma.csv "Name","AtBats","Hits" "Ken Myer Jr.","43","13" "Pilar Ackerman","","11" "Jonathan Haas","37","17"
作为替代方案,使用 ReadAll
和 Write
方法来替换整个文件内容,如下所示:
Option Explicit
Dim sFile
sFile = "D:\pshell\SO\Journals\test62676742.csv"
Dim RecCount, objFSO, objFileRead, objFileWrite, text
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFileRead = objFSO.OpenTextFile(sFile,1)
text = objFileRead.ReadAll
objFileRead.Close
Set objFileWrite = objFSO.OpenTextFile(sFile,2,true)
objFileWrite.Write(replace(text, "|", ","))
objFileWrite.Close
Wscript.Echo "file processed"
Output(初始copy
重新建立输入文件带˙|˙竖线):
copy /Y "D:\pshell\SO\Journals\test2.csv" "D:\pshell\SO\Journals\test62676742.csv"
1 file(s) copied.
cscript //NoLogo D:\bat\SO676742b.vbs && type "D:\pshell\SO\Journals\test6*.csv"
file processed D:\pshell\SO\Journals\test62676742.csv "Name","AtBats","Hits" "Ken Myer Jr.","43","13" "Pilar Ackerman","","11" "Jonathan Haas","37","17"