MS-DOS: Recoger retorno de error de subprograma python

Necesito ayuda con el siguiente código que he programado. Se compone de dos partes. Un cmd, que realiza unas acciones previas y llama a un programa .py (python) el cual realiza una serie de chequeos y en base a eso devuelve un código de retorno, que debe recoger el cmd.
CMD
================================
set errorlevel=0
e:
dir | find "free" > salida.txt
RSH 10.40.78.122 -l asradmin .control | find "free" > salida2.txt
python.exe E:\scripts\FS.py
Echo %errorlevel%
Python
================================
tamano=open("salida.txt")
libre="".join(tamano.readline().split(")")[1].split("bytes")[0].strip().split(","))
tamano.close()
limite=40000000000
if int(libre)<limite:
 libre=int(libre)/1000000000
 print " - Peligro: No existe espacio en disco suficiente:  " + str(libre) + "GB"
 sys.exit(1)
Según entiendo, poniendo limite muy grande hago que pase por el if (y pasa, lo he comprobado porque pinta el mensaje de peligro), con lo que la salida debería ser 1 y cuando pintara el cmd el valor de errorlevel debería pintar 1 pero en cambio pinta 0.

1 respuesta

Respuesta
1
Nunca he trabajado con Python pero supongo que la última instrucción se supone que pretende pasar el valor 1 como resultado de la ejecución del FS. Py.
Partiendo de esto hay que aclarar que cometes un error en el primer comando del CMD. ERRORLEVEL es una "variable del sistema", si la declaras en un CMD creas una variable local con el mismo nombre que inutiliza a la "variable del sistema". Y eso es lo que haces (creo) con el comando set errorlevel=0.
Prueba a eliminar esa línea y creo que todo te irá como esperas.
Saludos y suerte,
GGG

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas