Попробуйте это:
@echo off
for /f "tokens=*" %%a in (input.txt) do (
echo line=%%a
)
pause
из-за tokens=*
все захвачено в %a
редактировать :
чтобы ответить на ваш комментарий, вы должны сделать это следующим образом:
@echo off
for /f "tokens=*" %%a in (input.txt) do call :processline %%a
pause
goto :eof
:processline
echo line=%*
goto :eof
:eof
Из-за пробелов вы не можете использовать %1
, потому что он будет содержать только часть до первого пробела. И поскольку строка содержит кавычки, вы также не можете использовать :processline "%%a"
в сочетании с %~1
. Так что вам нужно использовать %*
, который получает %1 %2 %3 ...
, поэтому вся строка.