您需要使用代码页 65001
@echo off
CD /d "%~dp0"
CHCP 65001 > nul
Setlocal EnableExtensions DisableDelayedExpansion
for /f "delims= " %%T in ('robocopy /L . . /njh /njs' )do set "TAB=%%T"
set "f1=%~dp01.txt"
set "f2=%~dp02.txt"
set "outfile=%~dp0mix.txt"
break>"%outfile%"
<"%f2%" (
for /f "usebackq delims=" %%a in ("%f1%") do (
set /p "right="
set^ "left=%%a"
setlocal enabledelayedexpansion
>>"%outfile%" (echo(!left!!TAB!!right!)
endlocal
))
type "%outfile%"
Pause
输出:
Agenda Διάταξη των εργασιών
编辑
批处理/powershell 解决方案,可处理高达 8191 字节的行
@echo off
CD /d "%~dp0"
CHCP 65001 > nul
set "f1=%~dp01.txt"
set "f2=%~dp02.txt"
set "outfile=%~dp0mix.txt"
break>"%outfile%"
>"%Outfile%" (
powershell -noprofile -command ^
"$File1 = @(Get-Content "%f1%" -Encoding utf8); $File2 = @(Get-Content "%f2%" -Encoding utf8);$Max = [math]::Max($File1.GetUpperBound(0), $File2.GetUpperBound(0)); for($i = 0; $i -le $Max; $i++) {write-host ($File1[$i],$File2[$i]) -Separator "`t"}"
)
type "%outfile%" > Con
Pause
goto:Eof
注意 - 上述内容并不限定两个文件的行数相等,也不会改变如果一个字符串为空而另一个字符串不是则所采取的操作 - 这些是您的问题中未讨论的考虑因素,因此将不会在此答案中解决 - 请注意,如果您预计可能会遇到不相等数量的行,并且需要防止在此类行之前添加或附加分隔符,则应考虑这样做。
细分:
$File1 = @(Get-Content "%f1%" -Encoding utf8)
$File2 = @(Get-Content "%f2%" -Encoding utf8)
$Max = [math]::Max($File1.GetUpperBound(0), $File2.GetUpperBound(0))
for($i = 0; $i -le $Max; $i++) {
write-host ($File1[$i],$File2[$i]) -Separator "`t"
}
最后,与 powershell .ps1 脚本相同:
CHCP 65001 | Out-null
$F1 = (resolve-path -path $PSScriptRoot\1.txt).Path
$F2 = (resolve-path -path $PSScriptRoot\2.txt).Path
$Outfile = "$PSScriptRoot\mix.txt"
$File1 = @(Get-Content "$F1" -Encoding utf8)
$File2 = @(Get-Content "$F2" -Encoding utf8)
$Max = [math]::Max($File1.GetUpperBound(0), $File2.GetUpperBound(0))
$(for($i = 0; $i -le $Max; $i++) {
$line = ($File1[$i],$File2[$i]) -join "`t"
Write-Output $Line
}) | Out-File $Outfile -encoding utf8
Type $Outfile