Buenas.
Tengo un par de dudas, quiero sacarmelas de encima.
1. > nul 2>&1
Por ejemplo, en este código de Leo Gutiérrez. lo ví, y no entendí porqué lo puso así, si podría haber puesto "> nul".
Cita de: Leo Gutiérrez. en 7 Julio 2010, 06:57 AM
@echo off
rem Script que intenta visualizar las unidades
for %%_ in (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, s, t, u, v, w, x, y, z) do (
dir /b %%_:\ > nul 2>&1 && (
echo Unidad "%%_:" detectada
)
)
>nul (pause)
exit /b 0
2. Poner por ejemplo:
@ipconfig /release > nul
¿sería lo mismo que poner:
@echo off & ipconfig /release > nul
?
Es decir, poner @ delante de cada renglón de code, ¿es lo mismo que si pusiera @echo off al inicio del code?
Muchas gracias :).
Bueno, @ echo off oculta el código, pero @ ipconfig oculta el comando ipconfig...
Y sobre lo del >nul ¿a qué te refieres? ¿dónde tendría que ir ese>nul que dices?
for %%_ in (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, s, t, u, v, w, x, y, z) do (
dir /b %%_:\ > nul 2>&1
Ahí, no entiendo el porqué de ese > nul 2>&1. Quisiera una explicación de para qué se usa, y diferencia con el > nul :).
>nul 2>&1
bue >nul2...
Citar
STDOUT 1 Salida en la ventana del Símbolo del sistema
STDERR 2 Salida de errores en la ventana del Símbolo del sistema
>& Escribe la salida de un controlador en la entrada de otro controlador
Escribe la salida del comando en un archivo o un dispositivo, en lugar de en la ventana del Símbolo del sistema.
STDERR 2 Salida de errores en la ventana del Símbolo del sistema.
Para redirigir toda la salida, incluyendo el controlador 2 (es decir, STDERR), del comando ipconfig al controlador 1 (es decir, STDOUT) y redirigir la salida a Salida.log, escriba:
ipconfig.exe>>salida.log 2>&1
otro ejemplo
Para buscar Archivo.txt y redirigir el controlador 1 (es decir, STDOUT) y el controlador 2 (es decir, STDERR) a Buscar.txt, escriba:
findfile archivo.txt>buscar.txt 2<&1
en definitiva el nul es para que no se vea la redireccion a stderr volviendola a redirigir a stdout todo esto sin que se vea, quedando "guardadas" los errores y aciertos de buscar todos los directorios posibles entre a y z
ojala te sirva de ayuda hace un tiempo me tarde bastante en saber para q era esos simbolos...son todos de redireccion
mas info inicio...ejecutar...%windir%\hh.exe ms-its:%windir%\Help\ntcmds.chm::/ntcmds.htm
en la parte de conceptos...utlizar herrramientas de secuencia...archivo de lote...utilizar operadores de redireccion
Cuando un comando es ejecutado correctamente la salida puede aparecer en stdout, pero si hay un error, puede aparecer en stderr.
Es para ocultar tanto stdout como stderr.
Perdón por mi ignorancía, pero entendí lo del @, y no lo de > nul 2>&1.
Si alguien me lo pudiera explicar, si puede ser, de forma más sencilla, como para un principiante (que es lo que soy), se los agradecería pero muchísimo.
Cuando ejecutas un comando, si este se ejecuta bien se muestra en pantalla(stdout) sino se va a stderr(dispositivo de errores).
Mira, teclea esto en el cmd.exe
EHCO Hello world>NUL
Aunque redirijas a NUL, deberías ver el mensaje de error, esto es porque el dispositivo de salida estandard(stdout) y el dispositivo de errores son distintos.
En cambio si haces:
EHCO Hello world 2>NUL
No verás nada, ya que el mensaje de error fue enviado al "standard error stream".
Tomando esto:
comando > nul 2>&1 && (
2>&1
Se mezclan stdout y stderr en un solo dispositivo y son redirigidos a NUL.
Saludos.
¿Entonces sería para que no salga algún mensaje de error, si es que lo hay?
Sí, para que no salga NADA en pantalla, puesto que ambos dispositivos son mezclados y envíados a NUL.
Saludos.
Bueno, mira el & sirve para enlazar comandos
por ejemplo
@echo off
cls
se peude combinar con
@echo off&cls
Al escribir
comando > nul 2>&1 && (
Estás enviando ambos a nul.
Listo, ahora en todos los códigos pondré > nul 2>&1, ya no uso más el > nul solamente :D
a ver si puede ser conveniente ponerlo...pero cuando estas 100% seguro que el bat va a cumplir lo que queres q haga...sino como te enteras? :-\ ....como consejo sin mala intencion :rolleyes:
Obvio, no me voy a enojar. Todo lo tengo en cuenta para empezar a hacer mis códigos.
Muchas gracias a todos por las opiniones ;).