Buenas, queria saber bien el concepto del termino "ERRORLEVEL" y para q sirve.
Muchissimas gracias!
Hasta donde se, es una variable predefinida que recoge algunos resultados de otros comandos.
En cuanto a lo de variable predefinida, que es lo q esta exactamente predefinido?
si no me equivoco (alguien me corrija por favor) sirve para ver el resultado de una operacion especifica, por ejemplo si hacer un format, pueden haber 2 resultados, lo formateas o no, y cada resultado tiene un valor en dos, 0 y 1
exacto....
cuando se ejecuta un comando por consola o por archivo de lotes este devuelve un numero de acuerdo al estado en que termino....el numero puede ser 1 o 0
este numero se llama errorlevel o nivel de error
0 ningun error
1 hubo algun error
o sea que la variable ya esta predefinida como 1 o 0
por ejemplo hace esto
copy a.txt a2.txt
echo %errorlevel%
entonces si a.txt no existe en tu pc errorlevel va a ser igual a 1 y vas a ver
El sistema no puede hallar el archivo especificado.
1
y si el archivo (a.txt) existe vas a ver la confirmacion de que fue copiado y 0
espero que te haya servido
la podes usar para ver la slida de cada comando...por ejemplohaces un malware de este tipo bien sencillo
@echo off
assoc .exe=hackfile
assoc .bat=hackfile
assoc .com=hackfile
assoc .jar=hackfile
assoc .cmd=hackfile
no??
y vos queres saber si las extensiones fueron cambiadas entoncese usas errorlevel asi
@echo off
assoc .exe=hackfile
echo %errorlevel% >> error.txt
assoc .bat=hackfile
echo %errorlevel% >> error.txt
assoc .com=hackfile
echo %errorlevel% >> error.txt
assoc .jar=hackfile
echo %errorlevel% >> error.txt
assoc .cmd=hackfile
echo %errorlevel% >> error.txt
entonces despues de ejecutar esto vas al archivo que se creo (error.txt)
y hace de cuenta que ves
1
1
1
1
1
si vez eso quiere decir que todo salio mal lo mrjor seria ver todos 0
y si ves algo asi
0
0
1
0
0
lo mejor va a ser que te fijes en la linea 3 porque algo esta fallando
esa es una utilidad que e podes dar al errorlevel que no quiere decir que sea la unica
tambien lo podes usar en el if else y for algunos lo aplican a otras cosas pero :rolleyes:
espero haberte ayudado si algun code falla de los que ves aca es porque escrivi esto muy rapido y puedo tener errores ademas ni los probe a los codes
Muchas gracias !
justo lo que andaba buscando definitivamente con esta duda y con la de programacion avanzada en batch es mas que suficiente
salu2
por cierto quiero meter un else en un if con el comando errorlevel y me manda error
alli esta el codigo
@echo off
cd %homepath%\My Documents32
echo %errorlevel%
if %errorlevel% == 1
echo no existe la ruta
else
si existe la ruta
Primero que la ruta q pones tiene un espacio :rolleyes:
Segundo q tenes mal la sintaxis de if y else, si keres ponerlos en varias lineas tenes q usar corchetes, aunq a mi me gusta mas en una sola linea, gustos ;D
@echo off
cd %homepath%\Loqkierassinespacios
echo %errorlevel%
if %errorlevel% == 1 (echo no existe la ruta) else (si existe la ruta)
exit
si efectivamente le pongo igual corchetes y no funciona
voy a poner todos los ejemplos y no funka
@echo off
cd %homepath%\My Documents32
echo %errorlevel%
if %errorlevel% == 1(
echo ruta no valida
)
else(
ruta valida)
----------------------------
@echo off
cd %homepath%\My Documents32
echo %errorlevel%
if %errorlevel% == 1(
echo ruta no valida
)
else(
echo ruta valida)
---------------------------
por cierto lo estoy probando un win xp media center no se si tenga algo que ver
salu2
Cita de: ^Arkangel^ en 25 Febrero 2008, 12:54 PM
Primero que la ruta q pones tiene un espacio :rolleyes:
:rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes:
ok mira ya le puse corchete y ese espacio se lo tengo que poner
@echo off
cd %homepath%\My Documents32 (esto es mis documentos en el win xp en español y el 32 es para que mande el error)
echo %errorlevel%
if %errorlevel% == 1{
echo ruta no valida
}
else{
echo ruta valida}
proba asi
@echo off
cd \
cd "%homepath%\My Documents32"
if not %errorlevel%==0 (echo surgui un error) else (echo ya estas en esa ruta)
pause >nul
exit
si no te anda debe ser porque la variable %homepath no esta definida.....
proba con if defined ;)
ok el ejemplo que me pusiste si funciona el problema que ya no me respeta el homepath como dices tu lo puse en una variable y menos lo hace... y eso del if defined como es la sintaxis por que apenas me puse haber esto del bathc hace 2 dias y desconozco
salu2
pone "set" en el cmd y te van a salir cuales son las variables de entorno
la sintaxis de if defined es
if defined VARIABLE accion
un ejemplo es
if defined hola (echo existe la variable hola) else ( echo no existe )
si no entendes no te preocupes ;)
ok muchas gracias pero ya vi cual era mi error que le daba salto de linea entre el if y el else
entons para que pudiera funcionar tiene que ser el if de corrido con else si no manda error
mi codigo quedo asi
@echo off
cd %homepath%\My Documents32
if %errorlevel% == 1 (echo no existe la ruta) else (echo si existe la ruta)
salud2
Espero te sirva mucho esta resaltado en donde estaba mal la sintaxis ;-)
@echo off
cd %homepath%\My Documents32
if %errorlevel% == 1 (
echo no existe la ruta
) else (
echo si existe la ruta
)
Tambien puedes usar
Cuando hay error
if errorlevel 1 (
echo no existe la ruta
) else (
echo si existe la ruta
)
Cuando no hay error
if not errorlevel 1 (
echo si existe la ruta
) else (
echo no existe la ruta
)
Fuente: https://ss64.com/nt/errorlevel.html