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

如何用Windows批处理从引号逗号分隔文件填充数组并转竖线分隔格式

Windows批处理脚本实现带引号CSV转竖线分隔TXT

核心思路

利用批处理的字符串替换与循环提取引号内的字段,通过延迟变量扩展维护字段数组,最终按指定顺序拼接成竖线分隔格式输出。

完整脚本示例

假设输入文件为input.csv,输出文件为output.txt,需按第3、1、2字段的顺序输出:

@echo off
setlocal enabledelayedexpansion

:: 初始化输出文件
echo. > output.txt

:: 逐行读取输入文件
for /f "delims=" %%a in (input.csv) do (
    set "line=%%a"
    set "field_count=0"
    set "temp=!line!"
    
    :: 循环提取引号内的所有字段
    :extract_field
    if not "!temp!"=="" (
        :: 移除第一个引号及之前的内容
        set "temp=!temp:*"=!"
        if "!temp!" neq "" (
            set /a field_count+=1
            :: 截取当前引号内的内容作为字段
            for /f "delims="" tokens=1" %%b in ("!temp!") do set "field[!field_count!]=%%b"
            :: 移除已处理的字段部分
            set "temp=!temp:*"=!"
            goto extract_field
        )
    )
    
    :: 按计费系统要求的顺序拼接字段(可自行调整field[N]的顺序)
    set "output_line=!field[3]!|!field[1]!|!field[2]!"
    :: 写入输出文件
    echo !output_line! >> output.txt
)

endlocal
echo 转换完成,输出文件为output.txt

关键说明

  • setlocal enabledelayedexpansion:启用延迟变量扩展,保证循环内变量的实时更新生效。
  • :extract_field循环:反复截取引号间的内容,直到处理完整行所有字段。
  • !temp:*"=!":通过字符串替换定位到第一个字段的起始位置,移除前面的冗余内容。
  • for /f "delims="" tokens=1":以引号为分隔符,精准提取单个引号内的字段内容。

注意事项

  • 若输入文件包含表头,可在for /f后添加skip=1参数跳过:for /f "skip=1 delims=" %%a in (input.csv)。
  • 确保输入文件每行的字段数量一致,避免出现字段缺失或错位。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 16:23:22