我正在努力处理批处理文件,我希望删除换行符。具体来说,我只想在某些情况下删除换行符。 我有一个文本文件,格式如下:
TOTAL, blah1, blah2, blah3
PART, blah1, blah2, blah3
PART, blah1, blah2, blah3
TOTAL, blah1, blah2, blah3
PART, blah1, blah2, blah3
TOTAL, blah1, blah2, blah3
PART, blah1, blah2, blah3
PART, blah1, blah2, blah3
我想要的输出是:
TOTAL, blah1, blah2, blah3 PART, blah1, blah2, blah3 PART, blah1, blah2, blah3
TOTAL, blah1, blah2, blah3 PART, blah1, blah2, blah3
TOTAL, blah1, blah2, blah3 PART, blah1, blah2, blah3 PART, blah1, blah2, blah3
总之,我希望所有“PART”记录与它们上面的TOTAL记录显示在同一行。 我可以在带有find / replace的文本编辑器中实现这一点,通过查找换行符后跟字符串“PART”并将其替换为空格字符。 我需要使用批处理文件自动执行此过程,因为我将在应该运行的文件夹中包含大约80个* .txt文件。 理想情况下,批处理文件应创建原始文件的重命名副本,而原始文件保留未编辑。
到目前为止我设法找到的是如何删除所有换行符。
提前致谢。
答案 0 :(得分:0)
@ECHO Off
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=c:\106x"
SET "destdir=U:\destdir"
FOR %%a IN (%sourcedir%\*.txt) DO (
(
SET "line="
FOR /f "tokens=1*" %%p IN (%%a) DO (
IF "%%p"=="TOTAL," (
IF DEFINED line ECHO !line:~1!
SET "line="
)
SET "line=!line! %%p %%q"
)
IF DEFINED line ECHO !line:~1!
)
)>"%destdir%\%%~na.new"
)
GOTO :EOF
您需要更改sourcedir
和destdir
的设置以适应您的具体情况,并更改文件掩码*.txt
以适应。
对于匹配*.txt
的源目录中的每个文件,请阅读每一行。如果该行开始“TOTAL”,则输出line
中的所有累计行并清除line
,然后将文本累积到line
。
目标文件名位于目标目录中,与原始文件名(%~na
)和扩展名.new