我有一個包含n行的文本文件。 m行數包含我感興趣的字符串(m < = n)。我需要一個批處理文件,它只將包含該字符串的單個行(例如第一個事件)複製到新的文本文件中。當我使用findstr命令時,它將複製包含該字符串的所有行。如何將單個字符串實例從一個文本文件複製到新的文本文件中?
謝謝! 保羅Safier
我有一個包含n行的文本文件。 m行數包含我感興趣的字符串(m < = n)。我需要一個批處理文件,它只將包含該字符串的單個行(例如第一個事件)複製到新的文本文件中。當我使用findstr命令時,它將複製包含該字符串的所有行。如何將單個字符串實例從一個文本文件複製到新的文本文件中?
謝謝! 保羅Safier
由於定位的m行的FINDSTR命令(也可以是簡單或你需要的那樣複雜)
findstr "search" "fileName.txt"
,那麼你可以處理使用FOR/F是命令的結果循環。通過使用GOTO,您可以在第一個匹配行之後跳出循環。
for /f "delims=" %%A in ('findstr "search" "fileName.txt"') do (
echo %%A >>"outFile.txt"
goto :break
)
:break
FOR命令是可用於批處理的更復雜命令之一。有很多選擇。您可以通過從命令提示符輸入HELP FOR
或FOR /?
來獲得有關該命令的幫助。
「DELIMS =」選項禁止將行解析爲標記。如果沒有這個選項,FOR/F會將每一行分解爲由空格或製表符分隔的標記。分隔符列表可以設置爲其他字符,或者在您的情況下,設置爲無。
我上面給出的代碼將跳過以;
開頭的行,因爲FOR/F會跳過以EOL字符開頭的任何行 - 默認爲;
。您可以將EOL字符更改爲任何單個字符。但是,如果您不知道您的匹配行可能會以什麼開始,那麼您不知道用於EOL的字符。完全禁用所有令牌解析和EOL行跳過的語法很奇怪:
for /f delims^=^ eol^= %%A in (...) do ...
dbenham:那似乎很好用!謝謝! Paul Safier –
@PaulSafier - 如果您得到的答案完全解決了您的問題,那麼您應該通過點擊左上角附近的複選標記來接受它。該行動讓其他人知道該問題已得到解答,它將授予您2個聲望點,並將答案海報授予15分。對於給定的問題,只能接受1個答案。一旦你達到15分,你也可以回答問題。一個投票可以給回答者10分。你可以投票選出有用的答案,甚至可以回答其他人的問題。 – dbenham
完成。謝謝。 - Paul Safier。 –