@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
更新
另一种具有相同准确性的方法
@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
对于任何其他类型的文本操作,您下次可以使用我的 TEXTMAN 子例程(西班牙语注释行,抱歉):
@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)