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

Windows下批处理按列合并TXT文件出现UTF-8乱码及无分隔符问题

问题修复方案

核心修改逻辑

两个问题可分别通过调整控制台编码、插入制表符分隔符解决,修改后的完整批处理代码如下:

@echo off
:: 切换控制台编码为UTF-8,屏蔽命令输出
chcp 65001 >nul
set f1=1.txt
set f2=2.txt
set outfile=mix.txt
type nul>%outfile%
(
    for /f "delims=" %%a in (%f1%) do (
        setlocal enabledelayedexpansion
        set /p line=
        :: 两个变量中间的空白为制表符(直接按Tab键输入即可)
        echo(%%a	!line!>>%outfile%
        endlocal
    )
)<%f2%
pause

修改说明

  • 编码乱码修复:批处理默认使用系统区域对应的ANSI编码(你的场景下为Windows-1253希腊语编码),在脚本开头添加chcp 65001 >nul即可将编码切换为UTF-8,匹配源文件的编码格式,避免非ASCII字符转码错误。
  • 制表符分隔修复:在echo输出语句的%%a和!line!两个变量中间插入制表符(按键盘Tab键输入的空白字符),即可实现两列之间用制表符分隔的需求。

性能优化提示(可选)

如果处理百万行级数据时批处理效率过低,可使用PowerShell命令实现更高性能的合并,示例命令如下:

$lines1 = [System.IO.File]::ReadLines("1.txt")
$lines2 = [System.IO.File]::ReadLines("2.txt")
$output = [System.IO.StreamWriter]::new("mix.txt", $false, [System.Text.Encoding]::UTF8)
$enum1 = $lines1.GetEnumerator()
$enum2 = $lines2.GetEnumerator()
while ($enum1.MoveNext() -and $enum2.MoveNext()) {
    $output.WriteLine($enum1.Current + "`t" + $enum2.Current)
}
$output.Dispose()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:00:02