Test Foro de elhacker.net SMF 2.1

Programación => Scripting => Mensaje iniciado por: SPARTAKOS en 28 Agosto 2010, 19:40 PM

Título: Dudas tontas.
Publicado por: SPARTAKOS en 28 Agosto 2010, 19:40 PM
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
Código (dos) [Seleccionar]
@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 :).
Título: Re: Dudas tontas.
Publicado por: FerJGS en 28 Agosto 2010, 19:51 PM
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?
Título: Re: Dudas tontas.
Publicado por: SPARTAKOS en 28 Agosto 2010, 19:57 PM
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 :).
Título: Re: Dudas tontas.
Publicado por: flony en 28 Agosto 2010, 21:10 PM
>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
Título: Re: Dudas tontas.
Publicado por: leogtz en 28 Agosto 2010, 21:47 PM
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.
Título: Re: Dudas tontas.
Publicado por: SPARTAKOS en 29 Agosto 2010, 05:07 AM
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.
Título: Re: Dudas tontas.
Publicado por: leogtz en 29 Agosto 2010, 07:28 AM
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.
Título: Re: Dudas tontas.
Publicado por: SPARTAKOS en 30 Agosto 2010, 00:02 AM
¿Entonces sería para que no salga algún mensaje de error, si es que lo hay?
Título: Re: Dudas tontas.
Publicado por: leogtz en 30 Agosto 2010, 00:05 AM
Sí, para que no salga NADA en pantalla, puesto que ambos dispositivos son mezclados y envíados a NUL.

Saludos.
Título: Re: Dudas tontas.
Publicado por: FerJGS en 30 Agosto 2010, 01:08 AM
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.
Título: Re: Dudas tontas.
Publicado por: SPARTAKOS en 30 Agosto 2010, 01:45 AM
Listo, ahora en todos los códigos pondré > nul 2>&1, ya no uso más el > nul solamente :D
Título: Re: Dudas tontas.
Publicado por: flony en 30 Agosto 2010, 17:40 PM
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:
Título: Re: Dudas tontas.
Publicado por: SPARTAKOS en 31 Agosto 2010, 02:35 AM
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 ;).