Ms-Dos - Reemplazar string en archivo de texto

 
Vista:
sin imagen de perfil

Reemplazar string en archivo de texto

Publicado por carlos (28 intervenciones) el 26/11/2013 20:02:46
Estimados maestros, me puedena ayudar por favor,

No soy experto para nada en MSDOS. Estoy utilizando estos comandos y el cmd no hace nada, lo que necesito es poder modificar el archivo .txt y reemplazar un estrig por otro. el archivo esta delimitado por tabulación. Lo ejecuto y la consola queda en negro y no muestra nada.

En el archivo en la cabecera hay un nombre que dice: fecha_primera_compra.201310 y es este el que quiero renombrar a solo fecha_primera_compra

setlocal DisableDelayedExpansion
set BUILDIR="D:\Proyectos_BI\Base\Extra"
set INTEXTFILE=FUltCompra201311.txt
set OUTTEXTFILE=temp.txt
set SEARCHTEXT=fecha_primera_compra*
set VER= fecha_primera_compra
set OUTPUTLINE=

for /f "tokens=1,* delims=¶" %%A in ( '"type %BUILDIR%\%INTEXTFILE%"') do (
SET string=%%A
setLocal EnableDelayedExpansion
SET modified=!string:%SEARCHTEXT%=%VER%!
echo !modified! >> %BUILDIR%\%OUTTEXTFILE%
endlocal
)
del %BUILDIR%\%INTEXTFILE%
rename %BUILDIR%\%OUTTEXTFILE% %INTEXTFILE%


Saludos,
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Reemplazar string en archivo de texto

Publicado por Antoni Masana (811 intervenciones) el 27/11/2013 11:27:38
El asterisco al final no funciona.

1
2
3
4
5
6
7
8
9
10
La sustitución de variables de entorno ha sido mejorada así:
 
    %PATH:str1=str2%
 
expandirá la variable de entorno PATH, sustituyendo cada repetición de
"str1" en el resultado expandido con "str2". "str2" puede ser la cadena
vacía para eliminar de forma efectiva todas las repeticiones de "str1" de la
salida expandida. "str1" puede empezar con un asterisco, en cuyo caso,
coincidirá con lo contenido en la salida expandida desde su inicio, hasta
la primera aparición del fragmento de str1 que queda.

Esto si funciona:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
setlocal DisableDelayedExpansion
 
set BUILDIR="D:\Proyectos_BI\Base\Extra"
set INTEXTFILE=FUltCompra201311.txt
 
set OUTTEXTFILE=temp.txt
set SEARCHTEXT=fecha_primera_compra.201310
set VER= fecha_primera_compra
set OUTPUTLINE=
 
for /f "tokens=1,* delims=¶" %%A in ( '"type %BUILDIR%\%INTEXTFILE%"') do (
    SET string=%%A
    setLocal EnableDelayedExpansion
    SET modified=!string:%SEARCHTEXT%=%VER%!
    echo.!modified! >> %BUILDIR%\%OUTTEXTFILE%
    endlocal
 )
 
del %BUILDIR%\%INTEXTFILE%
rename %BUILDIR%\%OUTTEXTFILE% %INTEXTFILE%


Esto tambien funciona:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
setlocal DisableDelayedExpansion
 
set BUILDIR=D:\Proyectos_BI\Base\Extra
set INTEXTFILE=FUltCompra201311.txt
 
set OUTTEXTFILE=temp.txt
set SEARCHTEXT=fecha_primera_compra.201310
set VER= fecha_primera_compra
set OUTPUTLINE=
 
for /f "tokens=1,* delims=¶" %%A in ( %BUILDIR%\%INTEXTFILE% ) do (
    SET string=%%A
    setLocal EnableDelayedExpansion
    SET modified=!string:%SEARCHTEXT%=%VER%!
    echo.!modified! >> %BUILDIR%\%OUTTEXTFILE%
    endlocal
 )
 
del %BUILDIR%\%INTEXTFILE%
rename %BUILDIR%\%OUTTEXTFILE% %INTEXTFILE%

Hay una herramienta para MS-DOS que se llama AWK esta en varias versiones ( Win XP - Win 7 ) es muy util pero es necesario saber programarlo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Reemplazar string en archivo de texto

Publicado por CarlosQ (28 intervenciones) el 27/11/2013 14:15:49
Gracias Antoni

Sabes que lo ejecuto y no realiza la modificación, que puede ser?? algo de mi windows xp o cmd.

¿existe alguna forma de reemplazar un string variable?, por ejemlo la parte del texto 201310 es variable cambia todos los meses, me imaginaba usar

FUltCompra%date:~-4,4%%date:~-7,2%.txt
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Reemplazar string en archivo de texto

Publicado por Antoni Masana (811 intervenciones) el 29/11/2013 08:37:51
Esto te saca cualquier fecha

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@echo off
 
set BUILDIR=D:\Proyectos_BI\Base\Extra
set INTEXTFILE=FUltCompra201311.txt
 
set OUTTEXTFILE=temp.txt
set TEXT=Fecha_primera_compra
 
FOR /F "delims={" %%A IN ( %BUILDIR%\%INTEXTFILE% ) DO CALL :Grabar %%A
 
DEL %BUILDIR%\%INTEXTFILE%
REN %BUILDIR%\%OUTTEXTFILE% %INTEXTFILE%
GOTO:EOF
 
 
:Grabar
    set String=%1 %2 %3
    set Trozo=%String:~0,20%
 
    if "%Trozo%" == "%Text%" SET String=%Text%
 
    echo.%String% >> %BUILDIR%\%OUTTEXTFILE%
    GOTO:EOF
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Reemplazar string en archivo de texto

Publicado por carlos (28 intervenciones) el 29/11/2013 17:24:52
Gracias Antoni

Lo voy a probar, ¿esto recorre todo el archivo? ¿hay alguna condición que solo busque en la primera fila? ya que los archivos son pesados
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Reemplazar string en archivo de texto

Publicado por Marta (1 intervención) el 24/09/2017 13:26:55
Hola,

Muchas gracias por la ayuda!

Necesito reemplazar cadenas de caracteres con espacios y tildes. En concreto: "Sí, " por "Si" ¿Cómo puedo introducir estos caracteres en el código anterior para que me los interprete correctamente?

Un saludo,
Marta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar