在批处理文件中
FOR语句是否可以在同一行上多次回显.txt文件中的某些变量,而在它们之间不留空格?怎么样?
到目前为止,我已经尝试过:
FOR /f "tokens=*" %i in test.txt do (echo | set /p d="%i">>new.txt )
基本上,test.txt在每一行中都包含一个随机数,我想在新文件中将这些数字作为一个回显。但这会在它们之间保持空格。
答案 0 :(得分:0)
您可以尝试一下。
@echo off
set str=
setlocal enabledelayedexpansion
for /f "delims=" %%i in (test.txt) do set "str=!str!%%i"
echo|set /p str=!str!>>new.txt
请注意,最后一行可能是echo !str!>>new.txt
,但我只是使用echo|set
来消除任何换行符。
答案 1 :(得分:0)
要解决此问题,可以使用两种方法。
1)在/ F循环中使用令牌= 1
请注意,这仅在行上只有一个值且为第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)使用第二个“ for”循环删除尾随空格。
注意:我选择的方法将删除行中的所有空格,因此,如果您有两个数字,并且故意在一行上之间有一个空格,则该空格将被删除。如果您只希望抓住第一个任期,或者如果您希望在这种情况下保留空格,那么可以进行其他更改。
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
答案 2 :(得分:0)
这消除了文件中的任何换行符:
@echo off
SETLOCAL DisableDelayedExpansion EnableExtensions
<nul >NoCRLF.txt (FOR /F useback^ delims^=^ tokens^=*^ eol^= %%L in ("test.txt") do set/p"=%%L")
\n
或\r\n
都会被剥离。= <SPACE> <TAB> <NBSP>
开头