Procesar archivos unicode .AUD de SAP

Necesito procesar archivos de logs generados en el sistema SAP en formato Unicode, la herramienta que utilizo (ACL) no me permite hacerlo directamente, por lo cual quiero transformarlo a formato ASCII o quitar los caracteres impares del archivo original. Intenté hacerlo con un archivo .BAT pero no lo consigo.

Reemplazar.BAT, busca quitar los caracteres que veo en blanco (caracteres impares).

@echo off
Setlocal EnableDelayedExpansion
del /q Log.TXT
for /f "tokens=*" %%x in ('type LogI.AUD') do (
set linea=%%x
set linea=!linea: =!
Echo ! Linea! >> Log.TXT
)

Archivo original, son varios registros de longitud 400 contando los espacios entre caracteres

 2 A U 3 2 0 1 9 0 4 1 8 0 0 0 0 1 1 0 0 1 4 4 7 2 0 0 0 2 1 D 1 s r v h h 0 1   D F L O R               L M 0 7                                 S A P M S Y S T                                                                 3 0 0 1 L M 0 7                                                                                                                         s r v h h 0 1                           2 A U 5 2 0 1 9 0 4 1 8 0 0 0 0 1 2 0 0 1 4 1 9 9 0 0 0 3 2 D 2 s r v h h 0 1   M D O R R E G O                                                 S A P M S S Y 1                                                                 3 0 0 1 F & 0 & R                                                                                                                       s r v h h 0 1                           

Salida

 =                                                                                        

1 respuesta

Respuesta
1

Intuyo que el problema está relacionado con que en el archivo Unicode que estás tratando lo que consideras "espacios" son en realidad "nulos", es decir un carácter de código 0x00 (en notación hexadecimal). Si copio lo que presentas como "archivo original" y le doy el nombre que figura en tu bat (LogI. AUD) y ejecuto tu BAT (corrigiendo, claro, el error que genera el editor de la página de meter un espacio entre "!" y "Linea" en la línea del ECHO) sí que hace lo que pretendes (más o menos, porque no creo que quisieras eliminar todos los espacios). Te copio un pantallazo para que puedas comprobarlo:

Pero tu LogI. AUD creo que no tiene, en realidad, "espacios" en las posiciones impares sino caracteres nulos que se presentan como espacios en pantalla al usar el TYPE (por ejemplo). Si tienes un editor hexadecimal (como el UltraEdit por ejemplo) podrás ver si las cosas son como digo.

Si quieres pasar a ASCII un único archivo Unicode creo que puedes probar a abrirlo con en Bloc de Notas, comprobar (usando "Guardar como") que te lo ha abierto como Unicode (en la casilla "Codificación") y luego cambiar esa casilla a "ANSI" y darle a Guardar (con otro nombre si no quieres perder el original).

En BAT no he descubierto (hasta la fecha) ninguna manera de tratar con los caracteres nulos pero no descartaría poder usar el PowerShell si quisieras convertir toda una batería de archivos (digamos *. AUD) a ASCII (digamos a *.TXT).

Ya ma contarás.

Buenos Días ¡Muchas Gracias!

Por ahora voy a seguir la sugerencia de abrir el archivo con Bloc de Notas y guardarlo como ANSI.

Saludos.

Miguel.-

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas