回答
這應該這樣做
for /f "skip=3 delims=*" %%a in (C:\file.txt) do (
echo %%a >>C:\newfile.txt
)
xcopy C:\newfile.txt C:\file.txt /y
del C:\newfile.txt /f /q
這將重新創建文件的前3行刪除。
爲了讓用戶更新,可以將消息以vbscript樣式集成到批處理文件中,或者在命令提示符中輸出消息。
@echo off
echo Removing...
for /f "skip=3 delims=*" %%a in (C:\file.txt) do (
echo %%a >>C:\newfile.txt
) >nul
echo Lines removed, rebuilding file...
xcopy C:\newfile.txt C:\file.txt /y >nul
echo File rebuilt, removing temporary files
del C:\newfile.txt /f /q >nul
msg * Done!
exit >nul
希望這會有所幫助。
用sed只打印與4號線開始(編輯:只有當你利用聯合國* X :)
$ sed -e '4,$p' in.txt
我更願意保持它的所有本地,因爲我可能會分發幾份副本謝謝 – kriegy 2012-07-11 09:16:56
這個問題被標記爲[標籤:批次]。你必須得到[Sed for windows](http://gnuwin32.sourceforge.net/packages/sed.htm)才能使它工作。 – 2012-07-11 09:54:01
如果我閱讀只使用批處理的答案,我建議這樣做:) – 2012-07-12 07:06:22
more +3 "file.txt" >"file.txt.new"
move /y "file.txt.new" "file.txt" >nul
以上是快速的偉大工程,具有以下限制:
- TAB字符被轉換爲一系列空格。
- 要保留的行數必須小於〜65535。如果行號超出,MORE將掛起(等待按鍵)。
- 所有行都將以回車和換行符結束,無論它們在源文件中的格式如何。
以下解決方案使用帶FINDSTR的FOR/F更健壯,但速度更慢。與簡單的FOR/F解決方案不同,它保留空行。但是像所有的FOR/F解決方案一樣,它的最大線長限制在8191字節以內。同樣,所有的行將通過回車和換行來終止。
@echo off
setlocal disableDelayedExpsnsion
>"file.txt.new" (
for /f "delims=" %%A in ('findstr /n "^" "file.txt"') do (
set "ln=%%A"
setlocal enableDelayedExpansion
echo(!ln:*::=!
endlocal
)
)
move /y "file.txt.new" "file.txt" >nul
如果你有我的方便,花花公子JREPL.BAT regex text processing utility,那麼你可以使用下面的一個非常強大和快速的解決方案。無論原始格式如何,這仍將終止所有包含回車和換行(\ r \ n)的行。
jrepl "^" "" /k 0 /exc 1:3 /f "test.txt" /o -
您可以通過添加/U
選項寫\ n行結束符,而不是\ r \ n。
如果您必須保留原始行結束符,則可以使用以下變化形式。這會將整個源文件加載到單個JScript變量中,因此總文件大小限制爲大約1或2 GB(我忘記了確切的數字)。
jrepl "(?:.*\n){1,3}([\s\S]*)" "$1" /m /f "test.txt" /o -
記住JREPL是一個批處理文件,所以如果你另一個批處理腳本中使用的命令必須使用CALL JREPL。
我用「更」爲第n行 命令後outting文件(Windows)命令
More +n orginalfilename.txt > outputfilename.txt
說明: 1.4.3 TXT文件第n行
後,如果你想跳過第一和尾部的最後幾行,你可以在 http://www.harchut.de/download/ms-dos/skip-tail-flatfile-example.zip
set L_TRIMFILE_CNT=0
set L_TRIMFILE_TMPFILE=work.countrows.find.tmp
find /c /v "" %P_TRIMFILE_INFILE% > %L_TRIMFILE_TMPFILE%
for /f "skip=1 tokens=3* " %%a in (%L_TRIMFILE_TMPFILE%) do (
if %L_TRIMFILE_CNT% == 0 set L_TRIMFILE_CNT=%%a
)
del %L_TRIMFILE_TMPFILE%
set /a L_TRIMFILE_EOF=%L_TRIMFILE_CNT%-%P_TRIMFILE_TAIL%
findstr /n .* "%P_TRIMFILE_INFILE%" > %L_TRIMFILE_TMPFILE%
if exist %P_TRIMFILE_OUTFILE% del %P_TRIMFILE_OUTFILE%
set V_TRIMFILE_SKIP="skip=%P_TRIMFILE_SKIP% tokens=1* delims=:"
if %P_TRIMFILE_SKIP% equ 0 set V_TRIMFILE_SKIP="tokens=1* delims=:"
for /f %V_TRIMFILE_SKIP% %%a in (%L_TRIMFILE_TMPFILE%) do (
if %%a leq %L_TRIMFILE_EOF% if exist %P_TRIMFILE_OUTFILE% @echo.%%b>>%P_TRIMFILE_OUTFILE%
if %%a leq %L_TRIMFILE_EOF% if not exist %P_TRIMFILE_OUTFILE% @echo.%%b>%P_TRIMFILE_OUTFILE%
)
del %L_TRIMFILE_TMPFILE%
使用我的代碼,你可以跳過或平面文件的尾線,而沒有任何額外的效用。
您可能想爲此答案添加一點解釋。總是比給他一條魚更好地給一個人釣魚竿。 – Amit 2015-05-22 13:50:14
- 1. 批處理文件刪除前3行csv文件
- 2. 批處理文件刪除文件夾
- 3. 批處理腳本刪除文本文件中的特定行
- 4. 批處理腳本 - 刪除從文本文件的特定行
- 5. 批處理文件刪除文本文件中的連續文本行
- 6. 刪除文本文件中的批處理文件變量
- 7. Linux刪除文件批處理腳本
- 8. 批處理腳本刪除文件
- 9. 刪除批處理文件中var的前3個字符?
- 10. 批處理:刪除文本文件末尾的換行符?
- 11. 批處理從文本文件中刪除重複的行
- 12. 使用批處理刪除文本文件中的某一行
- 13. 批處理文件,刪除文件和文件夾,除了
- 14. 批量刪除批處理文件
- 15. 從批處理文件中刪除文本行
- 16. 從批處理文件中的文件中刪除行
- 17. 刪除批處理文件夾中的文件和文件夾
- 18. 批處理文件刪除文件夾中的文件
- 19. 批處理文件隨機刪除文本文件的一半行嗎?
- 20. 批處理腳本刪除文本文件中的字符
- 21. 批處理文件刪除其中有少於3行的文件
- 22. 批處理文件以刪除文件和文件夾
- 23. 批處理文件,刪除文件,還創建刪除文件的日誌
- 24. 使用批處理腳本逐行解析文本文件(批處理文件)
- 25. 批量刪除文件擴展批處理文件
- 26. 運行批處理文件並刪除當前父目錄
- 27. 批處理或VB腳本添加3行文本到文件
- 28. 批處理文件腳本刪除文件夾中重複的文件
- 29. 批處理腳本犯規刪除文件夾,文件夾中的.txt文件:(
- 30. 批處理刪除文本文件中的尾部空白
[看這個鏈接] [1]。希望它能爲你工作。 [1]:http://stackoverflow.com/questions/418916/delete-certain-lines-in-a-txt-file-via-a-batch-file – 2012-07-11 08:46:30
阿倫耆那僅工作,如果你知道什麼是行我不 – kriegy 2012-07-11 09:18:04