Bueno este tutorial, vamos a aprender a usar los caracteres & && || y un poco de ERRORLEVEL.
Una confusion muy frecuente es que usan los caracteres & y && con el mismo proposito, & y && no son iguales.
Tienen sus significados para el CMD.
Código:
comando1 & comando2 :
Equivalencia :
Código:
comando1
comando2
Código:
comando1 && comando2 :
Equivalencia :
Código:
comando1
if %errorlevel%==0 (comando2)
Código:
comando1 || comando2 :
Equivalencia :
Código:
comando1
if %errorlvel%==1 (comando2)
El || se definiria como un %errorlevel% neq 0, ya que no todos los comandos devuelven un 0 o un 1.
Ejemplo :
Código:
C:\WINDOWS\system32>ldkfjgkldjfgkljdklfgkljdfg & echo %errorlevel%
"ldkfjgkldjfgkljdklfgkljdfg" no se reconoce como un comando interno o externo,
programa o archivo por lotes ejecutable.
9009
C:\WINDOWS\system32>
Gracias a Carlitos por la aclaración.
Vamos a ver algunos ejemplos :
Codigo con & :
Código:
@ECHO OFF
REM SE EJECUTA EL COMANDO MSG, SEGUIDO DEL ECHO.
MSG * HOLA! & ECHO HOLA
PAUSE>NUL
EXIT /B
Codigo con && :
Código:
@ECHO OFF
MSG * HOLA && ECHO EL COMANDO MSG SE EJECUTO CORRECTAMENTE
PAUSE>NUL
Es equivalente a :
Código:
@ECHO OFF
MSG * HOLA
IF %ERRORLEVEL%==0 (
ECHO EL COMANDO MSG SE EJECUTO CORRECTAMENTE
)
PAUSE>NUL
Veamos otro ejemplo :
Código:
@ECHO OFF
VER | FIND /I "LEO" && (
REM EL SIGUIENTE CODIGO NUNCA SE EJECUTARA, DEBIDO A QUE EN EL COMANDO VER
REM NO EXISTE NADA RELACIONADO CON LA CADENA "LEO"
ECHO CADENA "LEO" ENCONTRADA EN EL COMANDO VER
)
PAUSE>NUL
EXIT /B
Variemosle un poco para entender mejor :
Código:
@ECHO OFF
VER | FIND /I "XP" && (
REM EL SIGUIENTE CODIGO SI EJECUTARA, DEBIDO A QUE EN LA SALIDA DEL COMANDO VER
REM SI EXISTE "XP"
ECHO CADENA "XP" ENCONTRADA EN EL COMANDO VER
)
PAUSE>NUL
EXIT /B
Los caracteres || (pipes o tuberias juntas) :
Codigo con || :
Pondre un codigo simple para detectar si un Host responde a un PING :
Código:
@ECHO OFF
PING GOOGLE.COM && (
CLS ;
ECHO PING RESPONDIDO
) || (
CLS
ECHO MAQUINA NO ENCONTRADA!
)
Código:
Aqui logicamente que si encontrará a google.com, pero que pasa si ponemos en lugar de google.com sdfjksjdf.com :
Código:
@ECHO OFF
PING dklfjlgkdfg.com && (
CLS ;
ECHO PING RESPONDIDO
) || (
CLS
ECHO MAQUINA NO ENCONTRADA!
)
PAUSE>NUL
Como ven, || funciona como un ELSE.
Otro ejemplo de || :
Código:
@ECHO OFF
COPY ARCHIVO_INVENTADO.ALGO CARPETA_INVENTADA || (
ECHO EL ARCHIVO NO FUE ENCONTRADO O LA CARPETA DESTINO NO EXISTE!
) || (
ECHO ESTE MENSAJE JAMAS SE VERA
) && (
ECHO ESTE MENSAJE TAMPOCO.
)
PAUSE>NUL
Con este concluye este tutorial.
PD : No confundir || con | ni & con &&, tienen sus significados.
Curiosidades :
Código:
@ECHO OFF
ECHO HOLA ||~|| (ECHO SI)
PAUSE
Código:
@ECHO OFF
ECHO HOLA ||.~.|| (ECHO SI)
PAUSE>NUL
En resumen:
Esto es muy importante saberlo, nos permite ahorrar muchas lineas de codigo, ademas de que el codigo se ve mas legible y elegante.