VB Script实现CSV按指定列次数复制行并添加计数器
VB Script实现CSV行按指定次数复制并添加计数器列
以下是满足需求的完整VB Script代码,你只需要替换代码中的输入、输出文件路径即可使用:
' 创建文件系统对象,用于读写文件 Set fso = CreateObject("Scripting.FileSystemObject") ' 定义输入、输出文件路径,请根据实际情况修改 inputFilePath = "input.csv" outputFilePath = "output.csv" ' 打开输入文件并读取所有行到数组 Set inputFile = fso.OpenTextFile(inputFilePath, 1) ' 1 = 只读模式 lines = Split(inputFile.ReadAll, vbNewLine) inputFile.Close ' 打开输出文件准备写入,覆盖已有内容 Set outputFile = fso.OpenTextFile(outputFilePath, 2, True) ' 2 = 写入模式,True = 文件不存在则创建 ' 处理标题行:添加Counter列 If UBound(lines) >= 0 Then header = lines(0) & ",Counter" outputFile.WriteLine header End If ' 循环处理每一行数据 For i = 1 To UBound(lines) currentLine = Trim(lines(i)) ' 跳过空行 If currentLine <> "" Then ' 拆分当前行的内容 parts = Split(currentLine, ",") ' 获取最后一列的重复次数,转成整数 repeatTimes = CInt(parts(UBound(parts))) ' 循环复制行,计数器从1开始 For counter = 1 To repeatTimes ' 拼接新行:原内容 + 计数器值 newLine = currentLine & "," & CStr(counter) outputFile.WriteLine newLine Next End If Next ' 关闭输出文件,释放对象 outputFile.Close Set fso = Nothing WScript.Echo "处理完成,输出文件已生成:" & outputFilePath
代码关键说明:
- 文件系统对象:通过
CreateObject("Scripting.FileSystemObject")创建,是VBScript中操作文件、文件夹的核心工具。 - 行读取与拆分:使用
Split(inputFile.ReadAll, vbNewLine)把整个文件内容按换行符拆分成数组,方便逐行处理;用Split(currentLine, ",")拆分每行的字段。 - 标题处理:直接在原标题末尾追加
,Counter,确保输出文件的列标题包含新增的计数器列。 - 重复逻辑:通过内层循环,根据最后一列的数字控制复制次数,每次循环生成带当前计数器值的新行并写入输出文件。
- 空行处理:用
Trim(currentLine) <> ""跳过文件中的空行,避免无效处理。
示例验证:
用你提供的示例输入文件运行脚本后,输出文件内容如下(修正了原示例中Elaine行的笔误,确保每行都包含Counter值,符合列标题逻辑):
Name,ID,Lines,Counter Fred Smith,102,2,1 Fred Smith,102,2,2 Elaine Edwards,576,1,1 Joe Bloggs,987,3,1 Joe Bloggs,987,3,2 Joe Bloggs,987,3,3
内容的提问来源于stack exchange,提问作者js26233
相关产品推荐
相关产品推荐

