В вашем исходном файле должны быть завершающие пробелы.
Чтобы решить, вы можете использовать несколько методов.
1) Используйте токены = 1 в цикле for / F
Обратите внимание, что это работает, только если в строке есть только одно значение, а это n-е значение (в данном случае n = 1).
FOR /f "tokens=1" %i in (test.txt) do @(echo.| set /p "d=%~i">>new.txt )
Y:\>type new.txt
4912734109111317117319738888888888
2) Используйте вторую петлю «для», чтобы убрать конечные пробелы.
Примечание: выбранный мною метод удалит все пробелы в строке, поэтому, если у вас есть целые два числа с пробелом между ними в строке, пробел будет удален. Если вы предпочитаете только взять 1-й срок или если вы предпочитаете оставить место в таких обстоятельствах, тогда могут быть внесены дополнительные изменения.
Y:\>FOR /f "tokens=*" %i in (test.txt) do @(for %i in (%~i) DO @(echo.| set /p "d=%~i">>new.txt ) )
Y:\>type new.txt
491273410911131711731973658888888888
Ниже я подробно показываю, что проблема должна быть связана с конечными пробелами и с тем, как новый метод правильно обрабатывает это:
REM Initial Setup No Spaces:
Y:\>echo.>new.txt
Y:\>echo.4>>test.txt
Y:\>echo.9>>test.txt
Y:\>echo.12>>test.txt
Y:\>echo.7>>test.txt
Y:\>echo.34>>test.txt
Y:\>echo.10>>test.txt
REM Test Original Method and Result:
Y:\>FOR /f "tokens=*" %i in (test.txt) do @(echo.| set /p "d=%~i">>new.txt )
Y:\>type new.txt
491273410
REM Clear Result and Add More values including ones with lots of spaces:
Y:\>echo.>new.txt
Y:\>echo. 9 >>test.txt
Y:\>echo. 11>>test.txt
Y:\>echo.13 >>test.txt
Y:\>echo.17>>test.txt
Y:\>echo. 11>>test.txt
Y:\>echo. 73 >>test.txt
Y:\>echo.19>>test.txt
Y:\>echo. 73 65 >>test.txt
Y:\>echo.8888888888>>test.txt
REM Test Original Method and Result:
Y:\>FOR /f "tokens=*" %i in (test.txt) do @(echo.| set /p "d=%~i">>new.txt )
Y:\>type new.txt
4912734109 1113 171173 1973 65 8888888888
REM Reset Results File, Test New Method, and show results:
Y:\>echo.>new.txt
Y:\>FOR /f "tokens=*" %i in (test.txt) do @(for %I in (%~i) DO @(echo.| set /p "d=%~I">>new.txt ) )
Y:\>type new.txt
491273410911131711731973658888888888