[英]find the exact line and copy it - windows batch file
我的輸入文件是
abcd 145
abcd 148
abcd 153
abcd 523
abcd 563
我想編寫一個批處理文件以在輸入文本文件中找到第n
行和此后的每k
行(即第n
行,然后第n+k
, n+2k
等)並將其復制到另一個txt文件中
:PRINTFILE
SETLOCAL ENABLEDELAYEDEXPANSION
SET X=0
FOR /F "skip=%2 tokens=*" %%I IN (%1) DO (
SET /A X=1-!X!
IF "!X!"=="1" ECHO %%I
)
ENDLOCAL
EXIT /B 0
您必須將代碼調用為
CALL :PRINTFILE INPUT.TXT 1 > OUTPUT.TXT
輸出將從第1行開始(在上述情況下),並從INPUT.TXT發出第3、5 ...等行,並將輸出存儲到OUTPUT.TXT
@ECHO OFF
SETLOCAL
(
SET "printme=Y"
FOR /f "delims=" %%a IN (q21027851.txt) DO (
IF DEFINED printme (ECHO %%a&SET "printme=") ELSE (SET printme=Y)
)
)>newfile.txt
GOTO :EOF
輸入文件q21027851.txt
輸出到newfile.txt
最初將printme
設置為printme
會打印偶數行。
給定修訂的規范(我將通過編輯將其包含在問題中)
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET firstline=1
SET skipby=5
(
SET /a skipme=firstline-1
FOR /f "delims=" %%a IN (q21027851.txt) DO (
IF !skipme!==0 SET /a skipme=%skipby%&ECHO %%a
SET /a skipme-=1
)
)>newfile.txt
GOTO :EOF
嘗試這個
:PRINTFILE
SETLOCAL ENABLEDELAYEDEXPANSION
SET X=0
FOR /F "skip=%2 tokens=*" %%I IN (%1) DO (
SET /A R=!X!%%%3
IF "!R!"=="0" ECHO.%%I
SET /A X+=1
)
ENDLOCAL
EXIT /B 0
使用以下代碼來調用此代碼
CALL :PRINTFILE INPUT.TXT 4 5 > OUTPUT.TXT
其中4是文件開頭要跳過的行數,而5是步驟,即它將打印第4行,第4 + 5行,第4 + 5 + 5行,依此類推。
注意:如果您的文本文件具有字符! 或^它需要轉義:(
(由於聲譽問題,無法將其添加為評論:-p)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.