[英]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.