Loops 使用VB脚本将“|”替换为“,”

Loops 使用VB脚本将“|”替换为“,”,loops,vbscript,Loops,Vbscript,此代码仅更改第一行,并删除2000的其余部分 线 循环中有什么需要更改的吗? 请提供帮助您不能使用ReadLine和WriteLine方法替换整个文件内容。创建另一个输出文件,如下所示: Dim sFile sFile = "File Name" Dim RecCount Set objFSO = CreateObject("Scripting.FileSystemObject") RecCount = 1

此代码仅更改第一行,并删除2000的其余部分 线 循环中有什么需要更改的吗?
请提供帮助

您不能使用ReadLine和WriteLine方法替换整个文件内容。创建另一个输出文件,如下所示:

   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"
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方法替换整个文件内容,如下所示:

   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"
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"
输出初始副本用˙|˙垂直线重新建立输入文件:


为什么要逐行执行此操作?如果我执行该代码,我将获得一个错误权限被拒绝,这与您在读取文件的同时尝试写入文件时所期望的一样。请确保您制作了一个实际的最小可复制样本来演示问题
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"
copy /Y "D:\pshell\SO\Journals\test2.csv" "D:\pshell\SO\Journals\test62676742.csv"
        1 file(s) copied.
cscript //NoLogo D:\bat\SO\62676742b.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"