儘管你沒有表現出任何自己的努力,但我決定提供一個解決方案,因爲手頭的任務似乎對我來說並不是那麼微不足道。
以下腳本 - 讓我們將其稱爲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"
每一個指定的文件直接修改,所以測試時要小心!