Autor
|
Tema: Acciones sobre archivos de texto. [Batch] (Leído 442,769 veces)
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.866
|
EDITO:Ya lo resolví, venia en batch avanzado, era esto:
PD:XD Si lo prefieres todo en un único token:
|
|
|
En línea
|
|
|
|
lucaslopezld123
Desconectado
Mensajes: 25
|
Si pero solo al archivo. Resumiendo, lo que EleKtro H@cker intenta decir: Call : TEXTMAN L- 2 "Archivo.txt" :: TEXT MANIPULATOR ROUTINE v0.2 :: by Elektro H@cker rem USO: rem :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" :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :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 :RL :RS :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" ) && (Call TYPE " %~3" | @MORE + %%A%% > "%~nx3.NEW" ) && (CALL : RENAMER " %~3" ) & (GOTO:EOF ) :L- :RENAMER (REN " %~1" " %~nx1.BAK" ) & (MOVE /Y " %~nx1.BAK" " %TEMP%\" >NUL) & (REN " %~nx1.NEW" " %~nx1" ) & (GOTO:EOF )
perdon no entiendo, el archivo textman como lo consigo? donde lo pego? si mi texto se llama "repote.txt" cual seria la sintaxis para borrar las ultimas dos lineas?
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.866
|
@lucaslopezld123 Unos comentarios más arriba te explico cual es el código que debes usar. El archivo textman es ese, es una subrutina y se debe pegar al final de tu script batch. Exactamente lo que debes usar, como ya te expliqué, es esto: REM con este comando cortas las 2 últimas lineas de archivo.txt Call : TEXTMAN L- 2 "Archivo.txt" REM aquí el resto de tu código REM esta parte del código la dejas abajo del todo del script ::--------------------------------------------------------------------------- :TEXTMAN :L- :RENAMER (REN " %~1" " %~nx1.BAK" ) & (MOVE /Y " %~nx1.BAK" " %TEMP%\" >NUL) & (REN " %~nx1.NEW" " %~nx1" ) & (GOTO:EOF )
Saludos
|
|
« Última modificación: 17 Diciembre 2012, 11:02 am por EleKtro H@cker »
|
En línea
|
|
|
|
lucaslopezld123
Desconectado
Mensajes: 25
|
@lucaslopezld123 Unos comentarios más arriba te explico cual es el código que debes usar. El archivo textman es ese, es una subrutina y se debe pegar al final de tu script batch. Exactamente lo que debes usar, como ya te expliqué, es esto: REM con este comando cortas las 2 últimas lineas de archivo.txt Call : TEXTMAN L- 2 "Archivo.txt" REM aquí el resto de tu código REM esta parte del código la dejas abajo del todo del script ::--------------------------------------------------------------------------- :TEXTMAN :L- :RENAMER (REN " %~1" " %~nx1.BAK" ) & (MOVE /Y " %~nx1.BAK" " %TEMP%\" >NUL) & (REN " %~nx1.NEW" " %~nx1" ) & (GOTO:EOF )
Saludos Hola Muchas gracias por el aporte, consulta es posible que el codigo tenga algun fallo? no hace lo esperado elimina 4 lineas y mientras lo hace dice "...no puede encontrar la ubicacion" la ruta y nombre esta ok de hecho escribe los datos, solo que no borra lo que deberia. Gracias
|
|
« Última modificación: 17 Diciembre 2012, 11:02 am por EleKtro H@cker »
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.866
|
Como ya comenté había un fallo en esa función pero juraría haber posteado la correción y haber editado los comentarios con el nuevo código (Parece que no xD) :-/Es un fallo del foro al postear el código con formato "DOS", un error el cual nadie me hace caso y no lo arreglan xD Aqui tienes el código sin formato: @Echo OFF REM con este comando cortas las 2 últimas lineas de archivo.txt Call :TEXTMAN L- 4 "test.txt" REM aquí el resto de tu código Pause&Exit REM esta parte del código la dejas abajo del todo del script ::--------------------------------------------------------------------------- :TEXTMAN :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%%"|@FIND "%%TOTAL_LINES%%" >NUL) && (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) Un saludo.
|
|
« Última modificación: 17 Diciembre 2012, 11:00 am por EleKtro H@cker »
|
En línea
|
|
|
|
maurorap
Desconectado
Mensajes: 1
|
Estimado: Cuando trabajo con Edlin por ejemplo con este bloque de codigo ( echo String fechaExpiracion = " %fechaCaducidadLicencia%"; ) | edlin licencia.jsp
este lo ocupo para reemplazar la linea 15 con el texto String fechaExpiracion = "%fechaCaducidadLicencia%"; Al final del archivo me genera una linea, que por ejemplo con notepad es un cuadrado ( al ingresarlo a google lo transforma en "?"). Como logro que no me ingrese esa linea despues de editar esa linea del archivo? ( en realidad lo hace al reemplazar cualquier linea) saludos y de antemano gracias!!!
|
|
« Última modificación: 18 Diciembre 2012, 09:26 am por EleKtro H@cker »
|
En línea
|
|
|
|
lucaslopezld123
Desconectado
Mensajes: 25
|
quiero eliminar las ultimas dos lineas, ahora si funciona, pero luego todo el codigo en adelante no puede encontrar la ruta especificada. que estoy haciendo mal? aqui esta el codigo @ECHO OFF for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%i:\INS\NINFUS set DRIVE=%%i: ECHO INICIALIZANDO For /l %%A in (1,1,3) do (<nul (SET/p z=.) & >nul ping 127.0.0.1 -n 2 ) %DRIVE%\Ins\reg\registros.exe %DRIVE%\Ins\reg\Launcher.exe SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION FOR /f "tokens=1,2,3* delims=." %%a IN ('ver') DO ( SET WVer=%%a SET WVer=!WVer:~-1! SET WVer=!WVer!.%%b.%%c SET WVer=!WVer:]=! ) IF DEFINED ProgramFiles(x86) ( SET OSBit=64bits ) ELSE ( SET OSBit=32bits ) set hora=%time% SET DIA=%DATE% @ECHO %DIA%>>%DRIVE%\ReporteINS.txt @echo %COMPUTERNAME%>>%DRIVE%\ReporteINS.txt @ECHO %OS% %osbit% ver%WVer%>>%DRIVE%\ReporteINS.txt @echo Comenzo= %hora:~0,8%>>%DRIVE%\ReporteINS.txt @ECHO Instalacion Incompleta>>%DRIVE%\ReporteINS.txt @echo ------------------->>%DRIVE%\ReporteINS.txt pause set hora=%time% Call :TEXTMAN L- 2 "%DRIVE%\ReporteINS.txt"
@echo Termino= %hora:~0,8%>>%DRIVE%\ReporteINS.txt @echo Modo Automatico>>%DRIVE%\ReporteINS.txt @echo ------------------->>%DRIVE%\ReporteINS.txt
Pause&Exit
::--------------------------------------------------------------------------- :TEXTMAN :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%%"|@FIND "%%TOTAL_LINES%%" >NUL) && (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) ::---------------------------------------------------------------------------
|
|
« Última modificación: 22 Diciembre 2012, 17:01 pm por EleKtro H@cker »
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.866
|
quiero eliminar las ultimas dos lineas, ahora si funciona, pero luego todo el codigo en adelante no puede encontrar la ruta especificada. que estoy haciendo mal? No entendí bien tu problema, pero creo que he arreglado una errata en el TEXTMAN y te he mejorado el código en general, pruébalo, y si no te funciona explica mejor donde tienes problemas: @ECHO OFF SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (if exist "%%i:\INS\NINFUS" set "DRIVE=%%i:")
ECHO INICIALIZANDO
For /l %%A in (1,1,3) do (<nul (SET/p z=.) & >nul ping 127.0.0.1 -n 2 )
%DRIVE%\Ins\reg\registros.exe 2>NUL %DRIVE%\Ins\reg\Launcher.exe 2>NUL
FOR /F "Tokens=2 Delims==" %%# IN ('wmic os get version /Format:list') DO (Set "WVER=%%#")
IF DEFINED ProgramFiles(x86) (SET OSBit=64bits) ELSE (SET OSBit=32bits)
( ECHO %DATE% ECHO %COMPUTERNAME% ECHO %OS% %osbit% ver%WVer% ECHO Comenzo= %time:~0,8% ECHO Instalacion Incompleta ECHO ---------------------- )>>"%DRIVE%\ReporteINS.txt"
Call :TEXTMAN L- 2 "%DRIVE%\ReporteINS.txt"
( ECHO Termino= %time:~0,8% ECHO Modo Automatico ECHO --------------- )>>"%DRIVE%\ReporteINS.txt"
Pause&Exit
::--------------------------------------------------------------------------- :TEXTMAN
: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%%"|@FIND "%%TOTAL_LINES%%" >NUL) && (CALL :RENAMER "%~3" && GOTO:EOF) || (Echo %%@ >> "%~3.NEW")) :RENAMER (REN "%~1" "%~nx1.BAK") & (MOVE /Y "%~1.BAK" "%TEMP%\" >NUL) & (REN "%~1.NEW" "%~nx1") & (GOTO:EOF) ::---------------------------------------------------------------------------
|
|
|
En línea
|
|
|
|
lucaslopezld123
Desconectado
Mensajes: 25
|
MAESTRO!!!!!!!!!! ALGUNAVEZ TE DIJERON QUE SOS MUY, PERO MUY GROSO!!!?? muchisimas gracias quedo perfecto! me encantaria saber que es eso de "2>NUL" un genio total usted! jeje
|
|
|
En línea
|
|
|
|
Segadorfelix
Desconectado
Mensajes: 157
|
me encantaria saber que es eso de "2>NUL"
Redirige todos los errores a valor nulo.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Modificar archivos de texto [batch] [Perl]
« 1 2 »
Scripting
|
bjeli1980
|
10
|
13,657
|
17 Mayo 2010, 09:07 am
por bjeli1980
|
|
|
[BATCH] Ayuda guardando archivos de texto a php
Scripting
|
Geormarsch
|
2
|
4,321
|
20 Septiembre 2011, 16:33 pm
por Poderoscuro1207
|
|
|
[BATCH] [APORTE] Rutina TEXTMAN para manipular archivos de texto
Scripting
|
Eleкtro
|
2
|
8,032
|
15 Marzo 2014, 15:17 pm
por FranciskoAsdf
|
|
|
Como puedo arrastrar y concatenar archivos de texto en un BATCH
Scripting
|
PUCH84
|
6
|
9,921
|
28 Abril 2014, 09:49 am
por PUCH84
|
|
|
Ayuda con batch para crear archivos de texto plano
Scripting
|
seu230
|
6
|
3,073
|
5 Octubre 2018, 10:28 am
por seu230
|
|