我有一个包含一些信息的文本文件,如下所示:
7253 198760.294 533963.581
7373 198752.213 533954.046
739CT 198751.288 533952.902
在每一行中都有参数,它们之间有空格,但空格(不是制表符)是为了方便或只读。
我需要它看起来像这样:
1550,168040.682,630305.751,
1575,168023.241,630287.837,
15964TS,168008.317,630272.508,
这是我的代码:
@echo off
setlocal EnableDelayedExpansion
set LF=^
set "content="
for /f "delims=" %%x in (input.txt) do (
set "content=!content!%%x!LF!"
)
:loop
if defined content (
set "new=!content: = !"
if "!new!" neq "!content!" (
set "content=!new!"
goto :loop
)
)
if defined content if "!str:~0,1!" equ " " set "content=!str:~1!"
if defined content if "!str:~-1!" equ " " set "content=!str:~0,-1!"
echo(!content!
set string=!content! & echo !string: =,! > output.txt
endlocal
pause > null
它将所有内容都转换为一行,并在没有空格的情况下连接所有内容。
答案 0 :(得分:1)
由于有限的最大字符串长度,连接到单个字符串是危险的。更好地处理每条线路:
(for /f "tokens=1-3" %%a in (infile.txt) do (
echo %%a,%%b,%%c,
))>outfile.txt
注意:空行将被忽略(将丢失)