modificar texto en batch

Iniciado por brianchatran, 6 Octubre 2018, 21:47 PM

0 Miembros y 1 Visitante están viendo este tema.

brianchatran

Hola tengo una duda de como modificar una linea especifica de un txt en batch manteniendo el resto de la información intacta, no encuentro forma de poder hacerlo y que la linea de código para eso no me ocupe mucho.

ejemplo :yo quiero que la persona solo modifique el teléfono y que la otra información quede intacta .

nombre:juan
apellido:perez
CI:53529378
direccion:ejemplo
turno:noche
telefono:095423423
materias que cursa:programacion


Desde ya muchas gracias

**Aincrad**

#1
1) NO ESPECIFICAS QUE LENGUAJE. Y POR COMO TE EXPRESAS SUPONGO QUE NO POSES CONOCIMIENTO DE NINGUNO . AQUÍ NO AYUDAMOS ASÍ.

Intenta  crear tu propio script y en caso de que tengas algún error, con mucho gusto te ayudo.




A como te expresas, la respuesta que te daría es que :

1) agarres el txt , click derecho >> Editar .

2) Modificas el texto.

3) Y lo guardas.

Esa seria la Solución que le daría a alguien como tu.




brianchatran

#2
Cita de: **Aincrad** en  6 Octubre 2018, 22:16 PM
1) NO ESPECIFICAS QUE LENGUAJE. Y POR COMO TE EXPRESAS SUPONGO QUE NO POSES CONOCIMIENTO DE NINGUNO . AQUÍ NO AYUDAMOS ASÍ.

Intenta  crear tu propio script y en caso de que tengas algún error, con mucho gusto te ayudo.




A como te expresas, la respuesta que te daría es que :

1) agarres el txt , click derecho >> Editar .

2) Modificas el texto.

3) Y lo guardas.

Esa seria la Solución que le daría a alguien como tu.

perdón por no especificarme ,busco una forma de hacerlo dentro de un batch ya que tengo todo hecho dentro el  programa pero la parte de editar texto no logro saber la forma de hacerlo . perdón nuevamente

**Aincrad**

#3
Código (bash) [Seleccionar]
@echo off
goto main

:error
echo archivo no existe.
pause
goto main


:Main
cls
set /p file=Indique el nombre del archivo:
if not exist %file% goto error
set string=telefono
echo.
setlocal enabledelayedexpansion
set /a nchar=0
call:Contar
set /a nlin=0
For /f "useback tokens=*" %%F in ("%file%") do (
    set /a nlin+=1
    set "line=%%F"
    set /a xcont=0
    call:Comparar
)
echo. & echo Terminado. & pause>nul & goto Main

:Contar
If /i "!string:~%nchar%,1!" == "" goto:eof
set /a nchar+=1
goto Contar

:Comparar
If /i "!line:~%xcont%,%nchar%!" == "%string%" (
    set mtch=T
    call:Msj
)
If /i "!line:~%xcont%,%nchar%!" == "" (
    set mtch=F
    call:Msj
    goto:eof
)
set /a xcont+=1
goto Comparar

:Msj
If "%mtch%" == "T" (
    cls
    color a
    echo Telefono encontrado:  [%line%] & echo.
    call :Continue
)
If "%mtch%" == "F" echo LINEA %nlin%: %line%
goto:eof
exit

:Continue
set /p numero=introduzca El nuevo Numero :
    Call :TEXTMAN RL %nlin% "%file%" "Telefono : %numero%"
    pause
    exit

:TEXTMAN
(SET /A "A=0", "LINE=0", "TOTAL_LINES=0")  &  (CALL :%~1 %* || (ECHO Invalid parameter & Exit /B 1)) & (GOTO:EOF)
:RL
(For /F "tokens=1* delims=]" %%A in ('type "%~3" ^| find /n /v ""') DO (Call Set /A "LINE+=1" && (CMD /C "IF NOT "%%LINE%%" EQU "%~2" (if "%%B" EQU "" (Echo+>> "%~3.NEW") ELSE ((Echo %%B)>> "%~3.NEW")) ELSE ((Echo %~4)>> "%~3.NEW")"))) && (CALL :RENAMER "%~3") & (GOTO:EOF)
:RENAMER
(REN "%~1" "%~nx1.BAK") & (MOVE /Y "%~1.BAK" "%TEMP%\" >NUL) & (REN "%~1.NEW" "%~nx1") & (GOTO:EOF)



Bueno lo q hace el Code es Buscar la primera linea que tenga la palabra Teléfono y la cambia por el nuevo q tu introduzcas




Código sacado del aporte del compañero  @Elektro : [BATCH] [APORTE] Rutina TEXTMAN para manipular archivos de texto