Obtener error externo de Batch

Hola buen día, describo el problema:
Tengo una tarea programada en windows que ejecuta un .bat, este bat verifica que exista un TXT, si existe este TXT entonces abre Data Transfer Workbench toma ese TXT y hace cambios en SAP, una vez termina ese proceso mueve el TXT a otra carpeta (esto por que el bat se ejecuta cada hora si es que encuentra el archivo).

El problema radica en que al ejecutar el DTW aveces el TXT tiene algún dato erróneo por lo que no se inserta ningún cambio en SAP, aun asi el programa sigue y mueve el archivo de lugar sin yo saber si hubo algún error, hasta después que consulto en SAP. necesito una forma de saber que DTW dio algún error o termino el proceso bien, para validar con un IF y saber que si hay error entonces solo renombre el archivo con algo como “Error.txt” así no tener que esperarme a consultar en SAP.

estuve intentando con if %ERRORLEVEL% EQU 0 pero para batch el comando donde abre DTW es correcto sea lo que sea que haga DTW, entonces ERRORLEVEL siempre devuelve 0 aunque tenga error. anexo mi código original:

@echo off
IF EXIST "c:\MHO_AutoSAP\Cobranza\Archivos\Facturas.txt" (
	REM Abres DTW
	cd "C:\Program Files\SAP\Data Transfer Workbench"
	REM Ejecutas DTW con la ruta al archivo XML a cargar
	DTW -s C:\MHO_AutoSAP\Cobranza\Facturas.xml
		REM Renombramos archivo y movemos a historico
		SET NEW=%DATE:~0,4%%DATE:~7,2%%DATE:~4,2%%TIME:~0
		REM ,2%%TIME:~3,2%%TIME:~6,2%
		REN c:\MHO_AutoSAP\Cobranza\Archivos\Facturas.txt %NEW%Facturas.txt
		MOVE c:\MHO_AutoSAP\Cobranza\Archivos\%NEW%Facturas.txt c:\MHO_AutoSAP\Cobranza\Historico
)

La linea DTW -s C:\MHO_AutoSAP\Cobranza\Facturas.xml es la que necesito validar si se hizo correctamente

este es el código con el errorlevel, aunque el errorlevel siempre regresa 0

@echo off
IF EXIST "c:\MHO_AutoSAP\Cobranza\Archivos\Facturas.txt" (
	REM Abres DTW
	cd "C:\Program Files\SAP\Data Transfer Workbench"
	REM Ejecutas DTW con la ruta al archivo XML a cargar


	DTW -s C:\MHO_AutoSAP\Cobranza\Facturas.xml


	IF %ERRORLEVEL% neq 0 (

			REN c:\MHO_AutoSAP\Cobranza\Archivos\Facturas.txt 1errFacturas.txt)

	IF %ERRORLEVEL% equ 0 (
		
		REM Renombramos archivo y movemos a historico
		SET NEW=%DATE:~0,4%%DATE:~7,2%%DATE:~4,2%%TIME:~0
		REM ,2%%TIME:~3,2%%TIME:~6,2%
		REN c:\MHO_AutoSAP\Cobranza\Archivos\Facturas.txt %NEW%Facturas2.txt
		MOVE c:\MHO_AutoSAP\Cobranza\Archivos\%NEW%Facturas.txt c:\MHO_AutoSAP\Cobranza\Historico)


)
2 Me gusta

que tal a todos.

Mi reconocimento Grupo MH hacer ese tipo de bats en estos tiempos que ya todo es modo visual es de tiempos legendarios cuando se tenia que manejar las cosas en modo consola como en linux, unix o ms-dos, toda una leyenda el codigo que pusiste, un abrazo desde mexico

1 me gusta

Este tema se cerró automáticamente 30 días después de la última publicación. No se permiten nuevas respuestas.