我坚持这个: 我需要在批处理脚本上将单个制表符分隔文本文件中的两个文本文件合并。 例如:
文件1:
qwer
tyui
asdf
file2的:
1345
6876
8796
file3:
qwer 1345
tyui 6876
asdf 8796
事实上我只需要与Unix命令相同:paste -d "\t" file1 file2 > file3
答案 0 :(得分:13)
@echo off
set f1=1.txt
set f2=2.txt
set "sep= " % tab %
(
for /f "delims=" %%a in (%f1%) do (
setlocal enabledelayedexpansion
set /p line=
echo(%%a!sep!!line!
endlocal
)
)<%f2%
pause
goto :eof
答案 1 :(得分:3)
我知道没有本地Windows命令可以做到这一点,但是有一套适用于Windows here的Unix工具。
答案 2 :(得分:3)
walid2me的答案非常棒,这只是一个很小的例子来展示如何使文件!^
中的1.txt
等字符安全,文件2.txt
的内容是安全,用set/p
语法读取它。
@echo off
set f1=1.txt
set f2=2.txt
set "sep= " % tab %
(
setlocal DisableDelayedExpansion
for /f "delims=" %%a in (%f1%) do (
set "f1_line=%%a"
setlocal EnableDelayedExpansion
set /p f2_line=
echo(!f1_line!!sep!!f2_line!
endlocal
)
endlocal
)<%f2%
pause
goto :eof
如您所见,我只是在%%a
setlocal EnableDelayedExpansion
的扩展
还有另一个小缺陷,因为set/p
会删除跟踪控制字符,例如单个CR,LF和TAB。
这仅影响文件2.txt。
关于set /p
的深入分析位于New technic: set /p can read multiple lines from a file