使用批处理在txt中用逗号替换不需要的空格

时间:2017-07-24 10:41:01

标签: string batch-file

我有一个包含一些信息的文本文件,如下所示:
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

它将所有内容都转换为一行,并在没有空格的情况下连接所有内容。

1 个答案:

答案 0 :(得分:1)

由于有限的最大字符串长度,连接到单个字符串是危险的。更好地处理每条线路:

(for /f "tokens=1-3" %%a in (infile.txt) do ( 
    echo %%a,%%b,%%c,
))>outfile.txt

注意:空行将被忽略(将丢失)