elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Dudas tontas.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Dudas tontas.  (Leído 4,730 veces)
SPARTAKOS

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Dudas tontas.
« 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".
Código
  1. @echo off
  2. rem Script que intenta visualizar las unidades
  3. 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 (
  4. dir /b %%_:\ > nul 2>&1 && (
  5. echo Unidad "%%_:" detectada
  6. )
  7. )
  8. exit /b 0
  9.  

2. Poner por ejemplo:
Código:
@ipconfig /release > nul
¿sería lo mismo que poner:
Código:
@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 :).


« Última modificación: 28 Agosto 2010, 19:42 pm por SPARTAKOS » En línea

FerJGS

Desconectado Desconectado

Mensajes: 75


Ver Perfil
Re: Dudas tontas.
« Respuesta #1 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?


En línea

SPARTAKOS

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Dudas tontas.
« Respuesta #2 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 :).
En línea

flony


Desconectado Desconectado

Mensajes: 583



Ver Perfil
Re: Dudas tontas.
« Respuesta #3 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
« Última modificación: 28 Agosto 2010, 21:21 pm por flony » En línea

si un problema no tiene solucion entonces no es un problema...es algo inevitable
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Dudas tontas.
« Respuesta #4 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.
« Última modificación: 28 Agosto 2010, 21:50 pm por Leo Gutiérrez. » En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
SPARTAKOS

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Dudas tontas.
« Respuesta #5 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.
En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Dudas tontas.
« Respuesta #6 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

Código:
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:

Código:
EHCO Hello world 2>NUL

No verás nada, ya que el mensaje de error fue enviado al "standard error stream".

Tomando esto:

Código:
comando > nul 2>&1 && (

Código:
2>&1

Se mezclan stdout y stderr en un solo dispositivo y son redirigidos a NUL.


Saludos.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
SPARTAKOS

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Dudas tontas.
« Respuesta #7 en: 30 Agosto 2010, 00:02 am »

¿Entonces sería para que no salga algún mensaje de error, si es que lo hay?
En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Dudas tontas.
« Respuesta #8 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.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
FerJGS

Desconectado Desconectado

Mensajes: 75


Ver Perfil
Re: Dudas tontas.
« Respuesta #9 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.
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines