Ms-Dos - Problema Errorlevel

 
Vista:
sin imagen de perfil

Problema Errorlevel

Publicado por Cris (21 intervenciones) el 21/06/2013 14:10:18
Hola, pido ayuda porque llevo días tratando de hacer un Errorlevel y no lo consigo.


El código es este y me da error al ejecutar el script ErrorRen.vbs:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@echo off
 
if exist "C:\NEWFOLDER\Fichero.exe"  goto Mensaje1
 
:Mensaje1
 
RENAME C:\NEWFOLDER\Fichero.exe Fichero1.exe.
 
if errorlevel 1 goto Error1
:Error1
start ErrorRen.vbs
 
rem El Script ErrorRen está en el mismo directorio que el BAT
 
EXIT



Gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Problema Errorlevel

Publicado por Armando Nava (194 intervenciones) el 22/06/2013 01:44:25
Tienes problemas con las variables trata con esto:


@echo off

if exist Fichero.exe goto Mensaje1

:Mensaje1

RENAME Fichero.exe Fichero1.exe

echo %ERRORLEVEL%

if %ERRORLEVEL% EQU 1 goto Error1

:Error1

start ErrorRen.vbs

rem El Script ErrorRen
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problema Errorlevel

Publicado por Cris (21 intervenciones) el 22/06/2013 03:33:11
Perfecto!!! Funciona correctamente.

Muchas gracias por la ayuda.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Problema Errorlevel

Publicado por Antoni Masana (811 intervenciones) el 24/06/2013 07:06:02
Cris este BAT que has realizado esta MAL

Te pongo los comentaerios donde falta algo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@echo off
 
if exist Fichero.exe goto Mensaje1
# ---  Y si no esiste hace lo mismo para eso no hace falta verificar
:Mensaje1
 
RENAME Fichero.exe Fichero1.exe
 
echo %ERRORLEVEL%
 
if %ERRORLEVEL% EQU 1 goto Error1
 # --- Si el valor de %ERRORLEVEL% es igual a CERO ¿Que hace? 
:Error1
 
start ErrorRen.vbs
 
rem El Script ErrorRen



El comando IF para realizar un salto y/o una accion en funcion de si se cumple o no una condición

Ejemplo con el primer IF corregido:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@echo off
 
IF EXIST Fichero.exe  RENAME Fichero.exe Fichero1.exe
 
 ...
 
echo %ERRORLEVEL%
 
if %ERRORLEVEL% EQU 1 goto Error1
 # --- Si el valor de %ERRORLEVEL% es igual a CERO ¿Que hace? 
:Error1
 
start ErrorRen.vbs
 
rem El Script ErrorRen


El resto lo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problema Errorlevel

Publicado por Cris (21 intervenciones) el 25/06/2013 13:37:54
Perdón por el retraso en contestar.

De la otra manera también funcionaba salvo por un problemilla que no relacioné con el código.

El problema es que una vez que detectaba un error, entraba en bucle y a partir de ahí, siempre detectaba error aunque no lo hubiese.

Pruebo el nuevo código que me das y comento.

Muchas gracias por todo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problema Errorlevel

Publicado por Cris (21 intervenciones) el 25/06/2013 14:04:16
Siento lo que voy a decir, pero a pesar de la ayuda... ¡Estoy hecha un lío enorme! Pero no es raro porque entiendo muy poco de esto.

Pongo todo el código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
@echo off
ECHO.
ECHO.
ECHO.     Va a renombrar OCX y DLL
ECHO.     ________________________
ECHO.
ECHO.
ECHO.
ECHO.     msvbvm60.dll            isButton.ocx                    AlphaImageControlIn.ocx
ECHO.
ECHO.     FrameImg.ocx            LaVolpeShapes.ocx       BCTBalloonToolTip.ocx
ECHO.
ECHO.     -------------------------------------------------------------------------
ECHO.
ECHO.
ECHO.     Si no quiere continuar, cierre esta ventana.
ECHO.
ECHO.     En caso contrario, lee las instrucciones.
ECHO.
ECHO.
ECHO.   - INSTRUCCIONES:
ECHO.
          if exist "C:\Windows\SysWOW64\msvbvm60.dll"  goto Mensaje1
          if not exist "C:\Windows\SysWOW64\msvbvm60.dll"  goto Mensaje2
ECHO.
ECHO.
ECHO.
:Mensaje1
ECHO.
ECHO.     Las DLL y OCX van a ser renombradas con XXX
ECHO.
ECHO.
ECHO.
PAUSE
RENAME C:\Windows\SysWOW64\msvbvm60.dll XXXmsvbvm60.dll
RENAME C:\Windows\SysWOW64\isButton.ocx XXXisButton.ocx
RENAME C:\Windows\SysWOW64\AlphaImageControlIn.ocx XXXAlphaImageControlIn.ocx
RENAME C:\Windows\SysWOW64\FrameImg.ocx XXXFrameImg.ocx
RENAME C:\Windows\SysWOW64\LaVolpeShapes.ocx XXXLaVolpeShapes.ocx
RENAME C:\Windows\SysWOW64\BCTBalloonToolTip.ocx XXXBCTBalloonToolTip.ocx
 
 
 echo %ERRORLEVEL%
 if %ERRORLEVEL% EQU 1 goto Error1
 :Error1
 msg * No se ha podido renombrar con XXX algunos Controles OCX y DLL
exit
 
:Mensaje2
ECHO..
ECHO.     Las DLL y OCX van a ser renombradas con su nombre original
ECHO.
ECHO.
ECHO.
PAUSE
RENAME C:\Windows\SysWOW64\XXXmsvbvm60.dll msvbvm60.dll
RENAME C:\Windows\SysWOW64\XXXisButton.ocx isButton.ocx
RENAME C:\Windows\SysWOW64\XXXAlphaImageControlIn.ocx AlphaImageControlIn.ocx
RENAME C:\Windows\SysWOW64\XXXFrameImg.ocx FrameImg.ocx
RENAME C:\Windows\SysWOW64\XXXLaVolpeShapes.ocx LaVolpeShapes.ocx
RENAME C:\Windows\SysWOW64\XXXBCTBalloonToolTip.ocx BCTBalloonToolTip.ocx
 
echo %ERRORLEVEL%
if %ERRORLEVEL% EQU 1 goto Error1
:Error1
msg * No se ha podido renombrar algunos Controles OCX y DLL
exit




El bat renombra en los dos casos sin problema pero en el momento en que provoco un error, por ejemplo, quitando la msvbm60.dll, detecta el problema pero a partir de ahí, ya lo detecta siempre aunque el error se haya corregido.

Espero haberme sabido explicar.

Muchas gracias por la ayuda y paciencia.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema Errorlevel

Publicado por Antoni Masana (1 intervención) el 27/06/2013 12:06:04
La variable ERRORLEVEL conserva el valor de la ultima ejecución

Prueba a poner el pricipio del programa:

SET ERRORLEVEL=0

en este trozo de programa:

1
2
3
4
if %ERRORLEVEL% EQU 1 goto Error1
:Error1
msg * No se ha podido renombrar algunos Controles OCX y DLL
exit


Se ejecuta el msg para cualquier valor de ERRORLEVEL. Lo correcto seria

1
2
3
4
5
if %ERRORLEVEL% EQU 1 goto Error1
                      EXIT
:Error1
msg * No se ha podido renombrar algunos Controles OCX y DLL
exit


o mejor asi:

1
2
IF %ERRORLEVEL% EQU 1 msg * No se ha podido renombrar algunos Controles OCX y DLL
EXIT


Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problema Errorlevel

Publicado por Cris (21 intervenciones) el 27/06/2013 14:42:13
Poniendo donde ha indicado SET ERRORLEVEL=0 el programa detecta perfectamente si hay o no error. No falla.

Muchas gracias por la ayuda.

Un saludo,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar