尽管你没有表现出任何自己的努力,但我决定提供一个解决方案,因为手头的任务似乎对我来说并不是那么微不足道。
以下脚本 - 让我们将其称为clean-up-text-file.bat
- 仅忽略以您指定的单词开头的行。任何其他行都会附加到前一个行,直到遇到$
符号,在这种情况下会启动一个新的ine。用这种方法,不会有线路无意中丢失。
@echo off
setlocal EnableExtensions DisableDelayedExpansion
rem // Define constants here:
set _WORDS="Size","Small","Medium","Large"
for %%F in (%*) do (
set "COLL=" & set "FILE=%%~F"
for /F delims^=^ eol^= %%L in ('type "%%~F" ^& ^> "%%~F" rem/') do (
set "LINE=%%L"
(echo("%%L" | > nul find "$") && (
setlocal EnableDelayedExpansion
>> "!FILE!" echo(!COLL!!LINE!
endlocal
set "COLL="
) || (
set "FLAG="
for %%K in (%_WORDS%) do (
(echo("%%L" | > nul findstr /I /R /B /C:^^^"\"%%~K\>") && (
set "FLAG=#"
)
)
if not defined FLAG (
setlocal EnableDelayedExpansion
rem // The following line contains a TAB character!
for /F "delims=" %%E in (^""!COLL!!LINE! "^") do (
endlocal
set "COLL=%%~E"
)
)
)
)
)
endlocal
exit /B
要使用脚本,提供您的文本文件(S)为(a)命令行参数(S):
clean-up-text-file.bat "good.txt" "bad.txt"
每一个指定的文件直接修改,所以测试时要小心!