[Batch][Solucionado] COmo se llaman y para que sirven estos simbolos?

Iniciado por Dany3j, 24 Enero 2012, 13:12 PM

0 Miembros y 2 Visitantes están viendo este tema.

Dany3j

Hola, como les va tengo una pequeña duda, he leído varios tutoriales en el foro y veo muchos símbolos que no se para que son y sin embargo los uso a diario.  :laugh:

Si alguien me puede decir el nombre y para que sirve. Por ejemplo

Para que es este símbolo | y porque a veces lo usan así ||  

Este otro >nul aveces lo veo así 2>> nul y otras parecidas

Este otro ^ aveces lo veo así ^|

Salu2  ;-)
"Pensando en Batch" XD

Eleкtro

#1
Cita de: TheTroyanDark en 24 Enero 2012, 13:12 PM
he leído varios tutoriales en el foro y veo muchos símbolos que no se para que son y sin embargo los uso a diario.  :laugh:

:¬¬ Seguro que has leido un manual?
Leiste la explicación del supuesto manual?...


Intentaré explicarlo a mi modo...
Esos comandos son para redireccionar.

| Se definen como "pipes", y sirven para redireccionar el output de un comando, al input de otro comando.
Dir /B "*.*" | Find /V /C ""
Para que se entienda, En ese ejemplo, El comando de la derecha (FIND) trabaja sobre la salida del primer comando (DIR).

>Nul  Sirve para redireccionar la salida de un comando.
2>> Sirve para redireccionar la salida de un error del comando (Si diese error).

Ejemplo:

@echo off
Dir /B "dddddddd" >nul
Dir /B "dddddddd" 2>nul
Pause >Nul


El primer comando del DIR muestra el error
El segundo comando del DIR  no muestra el error.

^ Sirve para escapar caracteres espaciales (Como el "|" de la pipe) para que funcionen dentro de un nivel inferior, Como por ejemplo dentro de un FOR.

Saludos.



EDITO
Y aquí tienes el resto... www.robvanderwoude.com/redirection.php








Geormarsch



Código (dos) [Seleccionar]

@echo off
Dir /B "*.*" | Find /V /C ""
Pause


Este codigo te ubica en un directorio?
pero despues que hace el find?
"Comentar el código es como limpiar el cuarto de baño; nadie quiere hacerlo, pero el resultado es siempre una experiencia más agradable para uno mismo y sus invitados"

Eleкtro

Cita de: geormarsch en 24 Enero 2012, 14:28 PM
Este codigo te ubica en un directorio?
no se a que te refieres esxactamente con ubicar, pero...

CD ubica
Dir lista






Cita de: geormarsch en 24 Enero 2012, 14:28 PM
pero despues que hace el find?
Los parámetros que he usado con el comando find son:

/V          Muestra todas las líneas que no tengan la cadena especificad
/C          Muestra sólo el número de líneas que contienen la cadena.



Entonces, con el comando dir /B "*.*" (En este caso) recibo un output de 6 lineas, exactamente este:

Código (dos) [Seleccionar]
C:\Users\Administrador\Desktop>dir /B "*.*"
chars.txt
fdg.bat
Listdlls.exe
STESV [ByYeisus]
TESV.exe.lnk
winsxs.lnk


Y con "Find" busco "" de forma inversa usando /V, y con /C muestra el número de lineas de ese resultado:

Osea, en este caso, el ejemplo de antes muestra el número de líneas del output del dir:


C:\Users\Administrador\Desktop>dir /B "*.*" | find /v /C ""
6









Geormarsch

Y con "Find" busco "" de forma inversa usando /V, y con /C muestra el número de lineas de ese resultado: Osea, en este caso, el ejemplo de antes muestra el número de líneas del output del dir



entonces te muestra el numero de lineas de lo que especifiques, que otros usos le puedes dar al find?
"Comentar el código es como limpiar el cuarto de baño; nadie quiere hacerlo, pero el resultado es siempre una experiencia más agradable para uno mismo y sus invitados"

Eleкtro

Cita de: geormarsch en 24 Enero 2012, 14:50 PM
que otros usos le puedes dar al find?

Solo esos xd

Buscar cadenas en la salida de un comando, o buscar dentro de archivos de texto.








Geormarsch

Claro despues de usar el find automaticamente muestra una respuesta..
sin necesidad de usar un echo??

Me referia si se puede utilizar aparte de cortar lineas
"Comentar el código es como limpiar el cuarto de baño; nadie quiere hacerlo, pero el resultado es siempre una experiencia más agradable para uno mismo y sus invitados"

leogtz

#7
Cita de: geormarsch en 24 Enero 2012, 15:25 PM
Claro despues de usar el find automaticamente muestra una respuesta..
sin necesidad de usar un echo??

Me referia si se puede utilizar aparte de cortar lineas

Cada comando tiene una salida, que es mostrada en la salida standard (la pantalla).

Cuando tu haces esto:

comando1 | comando2

Pasas la salida del comando comando1 a la entrada del comando comando2.

|| se utiliza en ejecución condicional y significa un "else".

Ejemplo:

comando1 && (
rem todo salió bien
) || (
rem algo salió mal
)


Si el comando se ejecutó correctamente se ejecuta el código del &&, sino el del ||.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

Eleкtro

Leo, ¿sabes si es posible redireccionar la salida a un archivo pero en segundo plano?

Por ejemplo, quiero hacer esto:

Dir > archivo

Pero quiero que de todas formas se muestre la salida en la consola...

un saludo








Dany3j

muy buena la explicación,  EleKtro H@cker y Sr Leo, a ese tipo de explicación me refería. Sobre todo como explico Elektro sobre >nul y leo sobre ||

Seria muy útil crear un pequeño manual o agregarlo a los que ya hay, sobre ese tipo de símbolos que me imagino que hay otros mas.

También sobre las variables como este ejemplo

set hora=%time:~0,-6% lo de color rojo no se entiende mucho por lo novatos.

Salu2.
"Pensando en Batch" XD