¿Cómo puedo modificar un archivo txt mediante uno .Bat para cambiar los números por letras?

Tengo un archivo .txt

0911223980 2020-02-17 20:43:34.000 I 101
0911223980 2020-02-17 20:43:37.000 O 101
0911223980 2020-02-17 20:43:39.000 I 101
0911223980 2020-02-17 20:44:03.000 O 101
0911223980 2020-02-17 20:44:16.000 I 101

Y necesito cambiar las I por 1 y las O por 2

Cualquier ayuda será bien recibida.

1 Respuesta

Respuesta
1

Prueba con esto:

@echo off
Setlocal EnableDelayedExpansion
set archivo=archivo.txt
set carpeta=d:\carpeta prueba
pushd %carpeta%
del /q tmp.txt>nul 2>&1
for /f "usebackq delims=" %%x in ("%archivo%") do (
   set linea=%%x
   set linea=!linea:I=1!
   set linea=!linea:O=0!
   Echo ! Linea!>>tmp.txt
   )
Popd
goto :eof

Asigna a la variable CARPETA el path de la carpeta donde está el archivo a tratar y a la variable ARCHIVO el nombre del archivo. Ejecuta el BAT anterior. El resultado lo obtendrás en el archivo TMP.TXT. Prueba y nos cuentas.

Perdón. Sin leer cuidadosamente di por hecho que querías cambiar la "O" por un "0" y no por un 2. Sustituye la línea:

   set linea=!linea:O=0!

por

   set linea=!linea:O=2!

Además el editor de la página ha dejado un espacio en el comando ECHO entre la "!" y el nombre de la variable LINEA. No debe haber espacio

Hola!

1.-me había equivocado, es un archivo csv, no txt.
2.-Cambié entonces el tipo de archivo (espero eso no sea el problema)
3.-sólo me genera un archivo "tmp.csv", pero está vacío

Adjunto mi código :)

C:\Users\PROGRAMACION III\Desktop>copy con Hola.bat
@echo off
Setlocal EnableDelayedExpansion
set archivo=gt.csv
set carpeta=C:\Users\PROGRAMACION III\Desktop
pushd %carpeta%
del /q tmp.csv>nul 2>&1
for /f "usebackq delims=" %%x in ("%archivo%") do (
set linea=%%x
set linea=!linea:I=1!
set linea=!linea:O=2!
Echo!linea!>>tmp.csv
)
Popd
goto :eof
^Z
1 archivo(s) copiado(s).

C:\Users\PROGRAMACION III\Desktop>

Soy nuevo con los foros, acá escribo mejor la respuesta anterior
1.-Me había equivocado, el archivo es .csv no .txt
2.-Cambié entonces el tipo del archivo
3.-Me genera un documento en blanco :(

@echo off
Setlocal EnableDelayedExpansion
set archivo=gt.csv
set carpeta=C:\Users\PROGRAMACION III\Desktop
pushd %carpeta%
del /q tmp.csv>nul 2>&1
for /f "usebackq delims=" %%x in ("%archivo%") do (
    set linea=%%x
    set linea=!linea:I=1!
    set linea=!linea:O=2!
    Echo!linea!>>tmp.csv
)
Popd
goto :eof

De antemano gracias por tu ayuda

Que sea CSV o TXT no tiene importancia. Solo veo una cosa que puede explicar que no te funcione. La línea del ECHO debe ser así:

 Echo ! Linea!>>tmp. Csv

Como seguramente el editor volverá a alterarla te lo digo de palabra, entre ECHO y ! LINEA! Debe haber un espacio, pero entre la primera "!" y LINEA no debe haber ningún espacio.

Otra cosa, para hacer más legible el código del BAT te recomiendo que uses la ventanita SNIPPET, se abre con el icono "<>" de la barra de herramientas de la página, el tercero desde la derecha ("Insertar código fuente")

Ya veo que habías llegado al SNIPPET por tu cuenta. Lo del ECHO sigue teniendo vigencia.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas