¿Como separar mensajes de error en batch?

Recuerdas que en el programa añadimos en el archivo CLDIW los diferentes mensajes de error que podían surgir:

for /f "tokens=3,4,5,6,7,8,9" %%a in ('type Grab%1.log ^| find "error"') do (
   if %%a == file echo Error: archivo no encontrado
   if %%a == device echo Error: unidad no montada
   if "%%d %%e" == "for volume" echo Error: identificador de volumen inv lido
   if %%b == get echo Error: no se ha podido solicitar el bloqueo del volumen
   if %%b == unmount echo Error: no se ha podido desmontar el volumen
   if "%%d %%e" == "for file" echo Error: identificador de archivo inv lido
   if "%%d %%e" == "for disk" echo Error: identificador de disco inv lido
   if %%b == enough echo Error: no hay espacio suficiente en la unidad
   if %%a == data echo Error: imagen vac¡a
   if %%a == error echo Error: problemas en la grabaci¢n
   if %%b == image echo Error: no se ha indicado archivo a grabar
   if %%g == image echo Error: no se ha podido obtener identificador para el archivo
   if %%g == device echo Error: no se ha podido obtener identificador para la unidad
   if %%g == volume echo Error: no se ha podido obtener identificador para el volumen
   if "%%d %%e" == "lock volume" echo Error: no se ha podido bloquear el volumen
   if %%d == unlock echo Error: no se ha podido desbloquear el volumen
   if %%d == dismount echo Error: no se ha podido desmontar el volumen
   if %%d == read echo Error: no se han podido leer datos
   if %%d == write echo Error: no se han podido grabar datos
   if %%e == number echo Error: no se ha podido obtener el n£mero de sectores
   if %%e == image echo Error: no se ha podido obtener el tama¤o de la imagen
   if "%%f" == "number," echo Error: no se ha podido obtener el n£mero de unidad, ¨est  en uso?
   if "%%f" == "properties," echo Error: no se han podido obtener las propiedades de la unidad, ¨est  en uso?
)

Pues estos mensajes la manera de lanzarse que tienen es colocandose en la ventana principal del programa, hasta ahí bien, el problema es que estando dentro de algunas de las opciones del menú, si me aparecen varios mensajes de error de las unidades, como en el código hace varios cls pues me borra los mensajes de error primeros y no me da tiempo a ver que ha pasado en el resto de unidades, nunca me había fijado en esto ya que nunca me habían coincidido errores seguidos en este punto, pero puestos a mejorarlo, creo que lo mejor seria poner estos mensajes de error en otra ventana ya que aveces interfieren con las opciones del menú y así tendría la información mas clara sin que llegue a borrarse.

Entonces, ¿si pongo estos mensajes de error en otro archivo .bat y lo llamo desde el cdiw me saldra en ventana distinta?

Intentare yo mientrar entender el funcionamiendo de esa parte para ver si lo dejo un poco a mi gusto.

1 respuesta

Respuesta
1

He estado mirando el CLDIW_C.BAT y lo que hace es revisar los errores que se han producido si el final de la grabación indica que ha habido algún error (if errorlevel 1 goto :error). Se supone que ahí trata todos los que haya en el log correspondiente a esa unidad y los va sacando uno tras otro. No hay ningún CLS que limpie la ventana. Pero lo cierto es que la llamada al CLDIW_C se hace con START /B, lo que supone que no se cree una ventana específica para el proceso de grabación sino que se usa la de la opción del menú. Y creo que esa puede ser la causa. Prueba a poner un comando PAUSE antes del "goto inicio_menu" que corresponda a la opción que estés usando.

Te refieres a poner el PAUSE en el bat principal menuSD.bat? Yo lo he colocado aquí justo en la opción en donde se me borran los mensajes:

:grabarIP
Cls
Echo OPCIéN ELEGIDA: %TECLA%. %TEXTO%
echo.
echo.
echo Se va a proceder a la grabaci¢n de las siguientes unidades: %UnidadIp60%, %UnidadIp61%, %UnidadIp62%, %UnidadIp63% en: %date% %time%
set /p Es_grabar= Por lo que se va a proceder a formatear ¨Seguro (S/N)? 
if not %Es_grabar%==S if not %Es_grabar%==s goto inicio_menu
PING 192.168.1.210 -n 1 -w 1500 >NUL
Start /b "" cldiw_c %UnidadIp60% "%RutaIp60%"
PING 192.168.1.210 -n 1 -w 1500 >NUL
Start /b "" cldiw_c %UnidadIp61% "%RutaIp61%"
PING 192.168.1.210 -n 1 -w 1500 >NUL
Start /b "" cldiw_c %UnidadIp62% "%RutaIp62%"
PING 192.168.1.210 -n 1 -w 1500 >NUL
Start /b "" cldiw_c %UnidadIp63% "%RutaIp63%"
PAUSE
goto inicio_menu

Y ahora parece que ya funciona bien, me muestra todos los mensajes y cuando quiero volver al menú presiono una tecla.

Gracias.

Exacto. Esa era la idea. Me alegro de que haya servido.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas