@Echo OFF Set "File=Test.txt" Set /A "Start_Line=3" Set /A "End_Line=6" For /F "Tokens=*" %%# In ('Type "%FILE%"') DO ( Call Set /A "Line+=1" CMD /C "IF %%LINE%% GEQ %Start_Line% IF %%LINE%% LEQ %END_Line% (Echo %%#>>"Output.txt")" ) Pause&Exit
UPDATE
Another method with the same accuracy
@Echo OFF Set "File=Test.txt" Set /A "Start_Line=3" Set /A "End_Line=6" For /F "Tokens=* delims=" %%# In ('Type "%FILE%"') DO ( Set /A "Line+=1" CALL :READ_LINES "%%#" ) :READ_LINES (IF %LINE% GEQ %Start_Line% IF %LINE% LEQ %END_Line% (Echo %*>>"Output.txt") ELSE (GOTO:END)) & GOTO:EOF :END Pause&Exit
for any other type of text manipulation, you can use my TEXTMAN routine next time (comments in Spanish, sorry):
@Echo OFF :: TEXT MANIPULATOR ROUTINE v0.1 :: by Elektro H@cker USO: :TEXTMAN [ACCIĂN] [LĂNEA] [ARCHIVO] [TEXTO (Opcional)] REM ACCIONES: REM REM AL = ADD_LEFT * AĂADIR TEXTO AL PRINCIPIO DE UNA LĂNEA REM AR = ADD_RIGHT * AĂADIR TEXTO AL FINAL DE UNA LĂNEA REM E = ERASE * ELIMINAR UNA LĂNEA REM I = INSERT * INSERTAR UNA LĂNEA (VACĂA O CON TEXTO) REM RL = REPLACE_LINE * REEMPLAZAR UNA LĂNEA REM RS = REPLACE_STRING * REEMPLAZAR PALABRAS DE UNA LĂNEA REM RSA = REPLACE_STRING_ALL * REEMPLAZAR PALABRAS EN TODAS LAS LĂNEAS REM C+ = CHARACTER_PLUS * ELIMINAR LOS PRIMEROS "X" CARACTERES EN TODAS LAS LĂNEAS REM C- = CHARACTER_LESS * ELIMINAR LOS ĂLTIMOS "X" CARACTERES EN TODAS LAS LĂNEAS REM L+ = LINE_PLUS * CORTAR LAS PRIMERAS "X" LĂNEAS REM L- = LINE_LESS * CORTAR LAS ĂLTIMAS "X" LĂNEAS REM EJEMPLOS DE USO: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: Elimina la lĂnea 3 :: Call :TEXTMAN E 3 "Test.txt" :: :: Añade una frase al principio de la lĂnea 3 :: Call :TEXTMAN AL 3 "Test.txt" "Elektro H@cker " :: :: Añade una frase al final de la lĂnea 3 :: Call :TEXTMAN AR 3 "Test.txt" "Elektro H@cker " :: :: Inserta una lĂnea vacĂa en la lĂnea 3 :: Call :TEXTMAN I 3 "Test.txt" :: :: Inserta una lĂnea con texto en la lĂnea 3 :: Call :TEXTMAN I 3 "Test.txt" "Elektro H@cker " :: :: Reemplaza la lĂnea 3 por completo :: Call :TEXTMAN RL 3 "Test.txt" "Elektro H@cker " :: :: Reemplaza las palabras "Elektro" por " H@cker " en la lĂnea 3 :: Call :TEXTMAN RS 3 "Test.txt" "Elektro" " H@cker " :: :: Reemplaza las palabras "Elektro" por " H@cker " en todas las lĂneas :: Call :TEXTMAN RSA "Test.txt" "Elektro" " H@cker " :: :: Elimina los 3 primeros caracteres de todas las lĂneas :: Call :TEXTMAN C+ 3 "Test.txt" :: :: Elimina los 3 uĂșltimos caracteres de todas las lĂneas :: Call :TEXTMAN C- 3 "Test.txt" :: :: Elimina las 3 primeras lĂneas :: Call :TEXTMAN L+ 3 "Test.txt" :: :: Elimina las 3 Ășltimas lĂneas :: Call :TEXTMAN L- 3 "Test.txt" :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: PAUSE&EXIT :TEXTMAN (SET /A "A=0", "LINE=0", "TOTAL_LINES=0") & (CALL :%~1 %* || (ECHO Parametro incorrecto & Exit /B 1)) & (GOTO:EOF) :AL (For /F "usebackq tokens=*" %%@ in ("%~3") DO (Call Set /A "LINE+=1" && (CMD /C "IF NOT "%%LINE%%" EQU "%~2" (Echo %%@ >> "%~nx3.NEW") ELSE (Echo %~4%%@ >> "%~nx3.NEW")"))) && (CALL :RENAMER "%~3") & (GOTO:EOF) :AR (For /F "usebackq tokens=*" %%@ in ("%~3") DO (Call Set /A "LINE+=1" && (CMD /C "IF NOT "%%LINE%%" EQU "%~2" (Echo %%@ >> "%~nx3.NEW") ELSE (Echo %%@%~4 >> "%~nx3.NEW")"))) && (CALL :RENAMER "%~3") & (GOTO:EOF) :E (For /F "usebackq tokens=*" %%@ in ("%~3") DO (Call Set /A "LINE+=1" && (CMD /C "IF NOT "%%LINE%%" EQU "%~2" (Echo %%@ >> "%~nx3.NEW")"))) && (CALL :RENAMER "%~3") & (GOTO:EOF) :I (For /F "usebackq tokens=*" %%@ in ("%~3") DO (Call Set /A "LINE+=1" && (CMD /C "IF "%%LINE%%" EQU "%~2" (IF NOT "%~4" EQU "" (Echo %~4 >> "%~nx3.NEW") ELSE (Echo. >> "%~nx3.NEW"))" & Echo %%@ >> "%~nx3.NEW"))) && (CALL :RENAMER "%~3") & (GOTO:EOF) :RL (For /F "usebackq tokens=*" %%@ in ("%~3") DO (Call Set /A "LINE+=1" && (CMD /C "IF NOT "%%LINE%%" EQU "%~2" (Echo %%@ >> "%~nx3.NEW") ELSE (Echo %~4 >> "%~nx3.NEW")"))) && (CALL :RENAMER "%~3") & (GOTO:EOF) :RS (For /F "usebackq tokens=*" %%@ in ("%~3") DO (Call Set /A "LINE+=1" && (CMD /C "IF NOT "%%LINE%%" EQU "%~2" (Echo %%@ >> "%~nx3.NEW") ELSE (CALL SET "STRING=%%@" && CALL ECHO %%STRING:%~4=%~5%% >> "%~nx3.NEW")"))) && (CALL :RENAMER "%~3") & (GOTO:EOF) :RSA (For /F "usebackq tokens=*" %%@ in ("%~2") DO (CALL SET "STRING=%%@" && (CALL ECHO %%STRING:%~3=%~4%% >> "%~2.NEW"))) && (CALL :RENAMER "%~2") & (GOTO:EOF) :C+ (For /F "usebackq tokens=*" %%@ in ("%~3") DO (Call Set "LINE=%%@" && (CALL ECHO %%LINE:~%~2%% >> "%~nx3.NEW"))) && (CALL :RENAMER "%~3") & (GOTO:EOF) :C- (For /F "usebackq tokens=*" %%@ in ("%~3") DO (Call Set "LINE=%%@" && (CALL ECHO %%LINE:~0,-%~2%% >> "%~nx3.NEW"))) && (CALL :RENAMER "%~3") & (GOTO:EOF) :L+ (Call SET /A "A=%~2-1") && (Call TYPE "%~3" | @MORE +%%A%% > "%~nx3.NEW") && (CALL :RENAMER "%~3") & (GOTO:EOF) :L- (FOR /F %%X IN ('TYPE "%~3"') DO (CALL SET /A "TOTAL_LINES+=1")) & (CALL SET /A "TOTAL_LINES-=%~2-1") & (For /F "usebackq tokens=*" %%@ in ("%~3") DO (Call Set /A "LINE+=1" & Call echo " %%LINE%%!!| FINDSTR " %%TOTAL_LINES%% " && CALL :RENAMER "%~3" && GOTO:EOF || (Echo %%@ >> "%~nx3.NEW"))) :RENAMER (REN "%~1" "%~nx1.BAK") & (MOVE /Y "%~nx1.BAK" "%TEMP%\" >NUL) & (REN "%~nx1.NEW" "%~nx1") & (GOTO:EOF)
source share