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

如何通过.bat批处理正确转换含制表符空格的.tsv文件为.csv文件

批处理TSV转CSV(兼容字段含空格场景)解决方案

故障原因

原有脚本转换失败的核心问题:

  • 内层for %%b in (%%a)循环默认将空格、制表符同时识别为分隔符拆分文本,违背TSV仅以制表符作为列分隔的规则,导致字段内带空格的内容被错误拆分
  • 缺少字段内空格移除逻辑,无法匹配输出要求

修正后脚本

直接替换原有代码即可,脚本兼容带空格的路径,逻辑为:合并指定目录下所有TSV文件→逐行读取内容仅按制表符拆分列→移除所有字段内的空格→用逗号拼接列写入CSV:

@echo off
setlocal disableDelayedExpansion

set "OUT_DIR1=%~1"
set "input=%OUT_DIR1%\%~2"
set "output=%OUT_DIR1%\%~3"
set "IN_DIR=%~4"

:: 合并指定目录下所有tsv文件
type "%IN_DIR%\*.tsv" > "%OUT_DIR1%\result.tsv"

> "%output%" (
    for /f "usebackq delims=" %%a in ("%input%") do (
        set "line=%%a"
        setlocal enableDelayedExpansion
        :: 将所有制表符替换为逗号(注意=后为制表符,不要替换为空格)
        set "line=!line:	=,!"
        :: 移除内容中所有空格
        set "line=!line: =!"
        echo !line!
        endlocal
    )
)
endlocal

重要提示:代码中!line: =,!一行里,等号后的空白字符是制表符(Tab键输入),如果替换成空格会导致列分隔识别错误。

调用方法

传参逻辑和原脚本完全一致,按顺序传入4个参数即可:

脚本文件名.bat 输出目录路径 合并后TSV文件名 目标CSV文件名 待处理TSV所在目录路径

转换效果

使用你提供的测试样本运行后,输出结果完全符合预期:

0001,abc,demo1,abc
0001,abc,demo2,abc
0001,abc,demo3,abc
0001,abc,demo4,abc

内容的提问来源于stack exchange,提问作者Nguyễn Lê Nhật Quang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 16:37:01