You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

批量统计CSV列数的VB Script运行错误,求逻辑修复方案

VBS批量统计CSV列数修复方案

原脚本核心问题

  • 对象引用错误:打开CSV文件后未正确绑定读取对象,使用了未定义的textstream变量读取行内容,直接触发运行时报错
  • Instr函数参数错误:VBS中Instr语法为Instr(起始位置, 源字符串, 查找目标),原脚本参数顺序写反,且错误地去行号变量line_no中查找逗号,而非读取到的行内容line
  • 计数逻辑缺失:未实现整行逗号遍历统计逻辑,列数应为逗号出现次数+1,原脚本仅做了单次存在性判断
  • 变量混乱:计数变量混用ColumnCount和Count,且未在遍历每个文件时重置计数,会出现统计值累加错误
  • 变量覆盖错误:遍历文件的objFile变量被重复赋值为文本流对象,会破坏文件遍历逻辑
  • 输出格式不匹配:原需求输出CSV文件,代码中保存的是txt后缀

修复后完整代码

Const ForReading = 1
Const ForWriting = 2
Const Create = True

Set objFSO = CreateObject("Scripting.FileSystemObject")
sFolder = objFSO.GetParentFolderName(WScript.ScriptFullName)
' 改为输出CSV文件符合需求
ResultsFile = sFolder & "\FileColumnCount.csv"
Set objResultsFile = objFSO.OpenTextFile(ResultsFile, ForWriting, Create)
' 写入CSV表头
objResultsFile.WriteLine "文件名,列数"

For Each objFile In objFSO.GetFolder(sFolder).Files
    If UCase(objFSO.GetExtensionName(objFile.Name)) = "CSV" Then
        ' 跳过生成的统计文件本身
        If objFile.Name <> "FileColumnCount.csv" Then
            strFilePath = objFile.Path
            strFileName = objFile.Name
            ' 单独声明文本流对象,不覆盖objFile
            Set objTextStream = objFSO.OpenTextFile(strFilePath, ForReading)
            ColumnCount = 0
            ' 仅读取第一行统计即可,CSV所有行列数一致
            If Not objTextStream.AtEndOfStream Then
                line = objTextStream.ReadLine
                ' 统计逗号数量
                pos = InStr(1, line, ",")
                Do While pos > 0
                    ColumnCount = ColumnCount + 1
                    pos = InStr(pos + 1, line, ",")
                Loop
                ' 列数=逗号数+1
                ColumnCount = ColumnCount + 1
            End If
            objTextStream.Close
            ' 文件名加双引号避免文件名含逗号时CSV格式错乱
            objResultsFile.WriteLine Chr(34) & strFileName & Chr(34) & "," & ColumnCount
        End If
    End If
Next
objResultsFile.Close
MsgBox "FileColumnCount Complete"

内容的提问来源于stack exchange,提问作者sdf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 15:06:06