Ms-Dos - Sustituir un texto en un fichero txt

 
Vista:
sin imagen de perfil
Val: 7
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Sustituir un texto en un fichero txt

Publicado por Nano (11 intervenciones) el 26/08/2020 17:23:23
Un saludo a todos y expongo mi problemilla:

Tengo varios ficheros de texto txt en los que tengo que sustituir una cadena de números por otra.

Ejemplo:
Fichero1.txt sustituir el texto: ,25, por ,12, los números va entre dos comas
que sustituya todos las lineas que tengan esa propiedad y que guarde el fichero con la nueva sustitución como Fichero1.txt.


Esto sería para un fichero, pero tengo varios, si se puediera hacer extensivo a los demás ficheros...
Ejemplo:
Fichero2.txt sustituir el texto: ,29, por ,6,
Fichero3.txt sustituir el texto: ,14, por ,7,
Fichero4.txt sustituir el texto: ,52, por ,8,

asi sucesivamente, aunque supongo que teniendo 1, se podría hacer con varios bat para cada archivo y llamándolos para ejecutar desde otro bat




He buscado e indagado por internet pero no he hallado la formula, ningún ejemplo me ha funcionado.

Todo ello con un fichero bat.

Los ficheros no son muy grandes, el más grande es de 300k

Gracias a todos.
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.385
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Sustituir un texto en un fichero txt

Publicado por Antoni Masana (653 intervenciones) el 27/08/2020 11:37:15
Esto es una propuesta sin probar, no tengo tus fichero:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@echo off
 
For /F %%a in (Fichero2.txt) do Call :Fichero2 "%%a"
For /F %%a in (Fichero3.txt) do Call :Fichero3 "%%a"
For /F %%a in (Fichero4.txt) do Call :Fichero4 "%%a"
goto :EOF
 
:Fichero2
   set Reg1=%1
   set Reg1=%Reg1:~1,-1%
   set Reg2=%Reg1:,29,=,6,%
   echo %Reg2%>>NEW_Fichero2.txt
 
:Fichero3
   set Reg1=%1
   set Reg1=%Reg1:~1,-1%
   set Reg2=%Reg1:,14,=,7,%
   echo %Reg2%>>NEW_Fichero3.txt
 
:Fichero4
   set Reg1=%1
   set Reg1=%Reg1:~1,-1%
   set Reg2=%Reg1:,52,=,8,%
   echo %Reg2%>>NEW_Fichero4.txt

Ni no tengo garantías de que funcione al 100%. Hay otras formas de hacerlo con mejores garantías, pero con otras herramientas.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 7
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Sustituir un texto en un fichero txt

Publicado por Nano (11 intervenciones) el 27/08/2020 14:06:35
Gracias Antoni por tu ayuda.

El script va funcionando pero tiene un problema.

El primer archivo que toma, lo hace perfectamente
Guarda todo el archivo cambiado al fichero NEW:Fichero2.txt
Pero en adelante el programa lo que hace es:
Cambia todo perfectamente y guarda en NEW:Fichero3.txt, pero añade el fichero original Fichero2.txt
Y en la siguiente orden (3) toma el fichero4.txt cambia los valores que le hemos dado y lo guarda en NEW:Fichero4.txt, pero vuelve a añadir el fichero original Fichero1.txt+Fichero2.txt y así sucesivamente.
Habría que parar en algun momento el EOF de cada fichero para que sólo tome el que está en proceso.



Según va creando el fichero nuevo coloca lo que tiene que reemplazar pero va añadiendo todos los ficheros originales antes procesados.
Dejo una muestra de lo que hace el batch

Un saludo Antoni
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.385
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Sustituir un texto en un fichero txt

Publicado por Antoni Masana (653 intervenciones) el 27/08/2020 14:18:44
Disculpa.

Se me ha olvidado una linea para cada fichero.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
@echo off
 
For /F %%a in (Fichero2.txt) do Call :Fichero2 "%%a"
For /F %%a in (Fichero3.txt) do Call :Fichero3 "%%a"
For /F %%a in (Fichero4.txt) do Call :Fichero4 "%%a"
goto :EOF
 
:Fichero2
   set Reg1=%1
   set Reg1=%Reg1:~1,-1%
   set Reg2=%Reg1:,29,=,6,%
   echo %Reg2%>>NEW_Fichero2.txt
   goto:EOF
 
:Fichero3
   set Reg1=%1
   set Reg1=%Reg1:~1,-1%
   set Reg2=%Reg1:,14,=,7,%
   echo %Reg2%>>NEW_Fichero3.txt
   goto:EOF
 
:Fichero4
   set Reg1=%1
   set Reg1=%Reg1:~1,-1%
   set Reg2=%Reg1:,52,=,8,%
   echo %Reg2%>>NEW_Fichero4.txt
   goto:EOF

Las lineas vacías no las copia.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 7
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Sustituir un texto en un fichero txt

Publicado por Nano (11 intervenciones) el 27/08/2020 14:48:25
Perfecto Antoní.
Ahora si que sale niquelado.

Pero para no tener que hacer otro bat ¿Qué linea hay que poner para parar este script y luego poder eliminar fichero original y renombrar el nievo?

La segunda parte lo se hacer, lo que no pillo es poder parar el script que has hecho y que siga en el nuevo que pongo de borrar ficheros y renombrar

¡Muchas gracias por tu ayuda!
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.385
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Sustituir un texto en un fichero txt

Publicado por Antoni Masana (653 intervenciones) el 27/08/2020 16:42:04
Lineas nuevas.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
@echo off
 
For /F %%a in (Fichero2.txt) do Call :Fichero2 "%%a"
del Fichero2.txt
rem NEW_Fichero2.txt Fichero2.txt
 
For /F %%a in (Fichero3.txt) do Call :Fichero3 "%%a"
del Fichero.txt
ren NEW_Fichero3.txt Fichero3.txt
 
For /F %%a in (Fichero4.txt) do Call :Fichero4 "%%a"
del Fichero4.txt
ren NEW_Ficheror4.txt Fichero4.txt
 
goto :EOF
 
:Fichero2
   set Reg1=%1
   set Reg1=%Reg1:~1,-1%
   set Reg2=%Reg1:,29,=,6,%
   echo %Reg2%>>NEW_Fichero2.txt
   goto:EOF
 
:Fichero3
   set Reg1=%1
   set Reg1=%Reg1:~1,-1%
   set Reg2=%Reg1:,14,=,7,%
   echo %Reg2%>>NEW_Fichero3.txt
   goto:EOF
 
:Fichero4
   set Reg1=%1
   set Reg1=%Reg1:~1,-1%
   set Reg2=%Reg1:,52,=,8,%
   echo %Reg2%>>NEW_Fichero4.txt
   goto:EOF

Saludos.
\\//_
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

Sustituir un texto en un fichero txt

Publicado por Nano (11 intervenciones) el 27/08/2020 17:00:18
Ahora sí, Antoni,
He corregido unos pequeños fallos en el nuevo código ren por rem y escribir bien algún nombre de fichero y con ello funciona perfectamente el script para la función que quiero.
Muy amable por tu tiempo y por ayudarme.

Un saludo, Nano.
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
Val: 15
Ha aumentado su posición en 12 puestos en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Sustituir un texto en un fichero txt

Publicado por Yusniel (9 intervenciones) el 23/10/2020 22:18:33
Me vino como anillo a mi proyectivo este tema, habrá alguna forma de que sustituya palabras con espacios, ejemplo:

Reemplazar 'asa Bbob' por 'eee mmmm'
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