Bat para cambiar comas por puntos y comas

Estoy un poco olvidado de los bat, y quisiera partir de un ejemplo practico como para entender y evolucionarlo.
Tengo una carpeta c:\Actual donde recibo 2 archivos diarios, que tienen su nombre conformado por un prefijo y la fecha del día repuestos12102020.txt y pedidos12102020 ( algunas veces pueden acumularse 2 días o sea 4 archivos) . Necesito mediante un bat poder copiar primero estos archivos a c:\Actual\Backup con la extensión bak, y luego a cada uno de ellos cambiarles el separador que es coma, por el punto y coma ( quizás sea el punto pero no está definido aún) . Cada txt procesado debería copiarse a c:\Actual con el mismo nombre original y la extensión txt.

1 Respuesta

Respuesta
1

No sé qué pasa con la página que no me ha comunicado la existencia de algunas consultas de mi especialidad, como suele hacer cuando funciona bien. Esta es una de ellas. La he visto al entrar en la propia página.

En todo caso este código podría servirnos de punto de partida:

@echo off
Setlocal EnableDelayedExpansion
set carporig=c:\Actual
set carpbak=c:\Actual\Backup
pushd %carporig%
copy %carporig%\*.txt %carpbak%\*.txt
for /f "delims=" %%a in ('dir /b *.txt') do call :tratarch "%%a"
echo Pulsa intro para cerrar.
pause
popd
goto :eof
:tratarch
del /q tmp.txt>nul 2>&1
for /f "usebackq delims=" %%x in ("%~1") do (
   set linea=%%x
   set linea=!linea:,=;!
   echo !linea!>>tmp.txt
   )
copy /y tmp.txt "%~1"
del /q tmp.txt>nul 2>&1
goto :eof

Pero tal como está tiene algunos problemas: trata todos los archivos TXT de la carpeta origen, incluso los ya tratados en ejecuciones anteriores. Si no se renombran los ya tratados de alguna manera, habría que trabajar con la fecha de hoy, compararla con la de los archivos y decidir cuales se tratan. Esto complica las cosas porque las comparaciones de fechas tienen que tener en cuenta el mes y el año.

Ya me dirás como lo hacemos

¿Qué pasó con esto? ¿Ha dejado de interesarte el asunto?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas