Ответ 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
в Новая техника: set / p может читать несколько строк из файла