下面是該任務只用於那些線由命令FOR跳過不包含空行的輸入的文本文件的工作間歇代碼。
它刪除所有塊與3行,其中第一行包含returns
。
@echo off
setlocal EnableExtensions EnableDelayedExpansion
set "SkipLineCount=0"
set "OutputFile=OutputTextFile.txt"
del "%OutputFile%" 2>nul
for /F "usebackq eol=^ delims=" %%I in ("InputTextFile.txt") do (
if !SkipLineCount! EQU 0 (
set "Line=%%I"
set "Line=!Line:returns=!"
if "!Line!" NEQ "%%I" (set "SkipLineCount=1") else echo(%%I>>"%OutputFile%"
) else (
set /A SkipLineCount+=1
if !SkipLineCount! EQU 3 set "SkipLineCount=0"
)
)
move /Y "%OutputFile%" "InputTextFile.txt"
endlocal
此批處理文件處理每個非空行。命令FOR自動跳過所有不包含任何字符的行。
注1:eol=^
與命令線FOR是必要的,讀取和輸出也只是線包含逗號或分號否則會由命令也忽略FOR。
如果當前不應跳過行,則將當前行分配給變量Line
。接下來,如果該行至少包含一個returns
,那麼所有出現的字returns
都將從該行中刪除不區分大小寫。
如果字符串替換爲從文件讀取的未修改行後,變量Line
的字符串不相等,則行被忽略,因爲這意味着該行至少包含一個returns
。
否則從輸入文件中讀取的行被追加到輸出文件。
注2:echo
和%%I
之間(
這裏使用僅含有1個或多個空格或製表符作爲以其他方式與一個空間,而不是(
命令回聲會寫爲這樣的情況下其當前狀態輸出還輸入線OFF
轉換爲輸出文件,而不是從輸入文件讀取的空格/製表符。
在至少有一個returns
的行後面的下兩行也被複制到輸出文件時被忽略。
作爲最後一個命令,將移除了3行的已創建輸出文件移到輸入文本文件上。
爲了解所使用的命令及其工作方式,請打開命令提示符窗口,在其中執行以下命令,並仔細閱讀爲每個命令顯示的所有幫助頁面。
del /?
echo /?
for /?
if /?
move /?
set /?
setlocal /?
請閱讀微軟有關Using Command Redirection Operators的文章。
請提供你爲你的問題所作的努力簡短。提供您嘗試過的代碼塊或類似的東西。請參閱:http://stackoverflow.com/help/how-to-ask –
我只是可以用另一個替換一個詞,所以這在這裏沒有用嗎? –