comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

「Aprendiendo a usar FOR」~ Principiantes ~ By JaAViEr!★

  • 5 Respuestas
  • 3069 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado JaAViEr

  • *
  • Underc0der
  • Mensajes: 163
  • Actividad:
    0%
  • Reputación 0
  • http://codigo.ga
    • Ver Perfil
    • Blog de Programación :: Python
« en: Julio 17, 2011, 05:17:07 am »
Tutorial Comando FOR - Principiantes - JaAViEr

Hola , Buen Día a todos.

Tras ver que varios miembros se complican con el comando FOR,
Pasaré a explicarles el FOR, FOR /F y FOR /L que son los más utilizados
luego de aprender esto entenderán el FOR /D y FOR /R...
Comencemos...
FOR Básico
El FOR es como una variable con varios contenidos por ejemplo:
Código: DOS
  1. @No tienes permisos para ver links. Registrate o Entra con tu cuenta off
  2. No tienes permisos para ver links. Registrate o Entra con tu cuenta %%A No tienes permisos para ver links. Registrate o Entra con tu cuenta (ELEMENTO1 ELEMENTO2) No tienes permisos para ver links. Registrate o Entra con tu cuenta (
  3. ACCIONES
  4. )
  5.  
%%A es la variable donde almacenamos los elementos...
En Elemento1 y Elemento2 podemos modificar por lo que quieramos y en
las acciones las cosas que deseamos hacer con esos elementos.
En el IN () Deben ir los elementos, separados por comas, espacios, etc. Dentro
del DO () van las acciones a realizar sobre los elementos.
Un Sencillo ejemplo:
Código: DOS
  1. @No tienes permisos para ver links. Registrate o Entra con tu cuenta off
  2. No tienes permisos para ver links. Registrate o Entra con tu cuenta %%A No tienes permisos para ver links. Registrate o Entra con tu cuenta (Javier FROM CPH) No tienes permisos para ver links. Registrate o Entra con tu cuenta (
  3. No tienes permisos para ver links. Registrate o Entra con tu cuenta.%%A
  4. )
  5.  

Como verán nos dá la salida
Javier
FROM
CPH
Puesto que hemos decidido hacer un echo. mostrando
los elementos almacenados en la Variable %%A , cada vez
que recorre un elemento, vuelve al inicio y comienza con el segundo
así hasta terminar el bucle.
Otros ejemplos:
Código: DOS
  1. @No tienes permisos para ver links. Registrate o Entra con tu cuenta off
  2. No tienes permisos para ver links. Registrate o Entra con tu cuenta %%A No tienes permisos para ver links. Registrate o Entra con tu cuenta (archivo1.txt archivo2.txt) No tienes permisos para ver links. Registrate o Entra con tu cuenta (
  3. No tienes permisos para ver links. Registrate o Entra con tu cuenta /F /Q /S %%A
  4. )
  5.  
Lo que borraría el archivo1.txt y archivo2.txt pues esos son los elementos
Y la acción a realizar con ellos es del /F /Q /S.

Ven que sencillo es ?

FOR /L

El Parametro /L es un como un aumentador, lo utilizamos
para evitar un código largo como:
Código: DOS
  1. @No tienes permisos para ver links. Registrate o Entra con tu cuenta off
  2. No tienes permisos para ver links. Registrate o Entra con tu cuenta.Hola
  3. No tienes permisos para ver links. Registrate o Entra con tu cuenta.Hola
  4. No tienes permisos para ver links. Registrate o Entra con tu cuenta.Hola
  5. No tienes permisos para ver links. Registrate o Entra con tu cuenta.Hola
  6. No tienes permisos para ver links. Registrate o Entra con tu cuenta.Hola
  7.  
Y con FOR /L :
Código: DOS
  1. @No tienes permisos para ver links. Registrate o Entra con tu cuenta off
  2. No tienes permisos para ver links. Registrate o Entra con tu cuenta /L %%A No tienes permisos para ver links. Registrate o Entra con tu cuenta (1,1,5) No tienes permisos para ver links. Registrate o Entra con tu cuenta (
  3. No tienes permisos para ver links. Registrate o Entra con tu cuenta.Hola
  4. )
  5.  

Es la misma salida pero uno es más corto y simple.
Como ven el IN (1,1,5) Significa:
Comienza en el número 1, luego vamos de 1 en 1 hasta
llegar al número 5.
Sin FOR se puede hacer con un IF pero es más largo:
Código: DOS
  1. @No tienes permisos para ver links. Registrate o Entra con tu cuenta off
  2. No tienes permisos para ver links. Registrate o Entra con tu cuenta/a"count=0"
  3. :count
  4. No tienes permisos para ver links. Registrate o Entra con tu cuenta/a"count+=1"
  5. No tienes permisos para ver links. Registrate o Entra con tu cuenta.Hola
  6. No tienes permisos para ver links. Registrate o Entra con tu cuenta %count% No tienes permisos para ver links. Registrate o Entra con tu cuenta 5 (No tienes permisos para ver links. Registrate o Entra con tu cuenta/b)
  7. No tienes permisos para ver links. Registrate o Entra con tu cuenta:count
  8.  
En resumidas palabras el FOR /L nos sirve para
hacer un ciclo un determinado número de veces de manera
corta y sencilla.
Trabaja igual que el FOR Básico:
FOR %%A <- Guardamos los datos en %%A los cuales son solo utilizables en el DO
/L <- Es el parametro que utilizamos.
IN (1,1,5) <- Son los elementos
DO ( echo. Hola ) <- Son las acciones a trabajar con los elementos:
Código: DOS
  1. @No tienes permisos para ver links. Registrate o Entra con tu cuenta off
  2. No tienes permisos para ver links. Registrate o Entra con tu cuenta.Hola 10 veces No tienes permisos para ver links. Registrate o Entra con tu cuenta No tienes permisos para ver links. Registrate o Entra con tu cuenta /L:
  3. No tienes permisos para ver links. Registrate o Entra con tu cuenta /L %%A No tienes permisos para ver links. Registrate o Entra con tu cuenta (1,1,10) No tienes permisos para ver links. Registrate o Entra con tu cuenta (
  4. No tienes permisos para ver links. Registrate o Entra con tu cuenta.Hola %%A
  5. )
  6.  
Salida:

No olviden que cualquier duda solo deben consultar en el mismo post.

FOR /F

Este FOR /F es más extenso pues posee tokens, delims , eof, skip.
Por ahora les explicaré el tokens y el skip pues ando corto de tiempo.
Empezamos con un ejemplo básico y luego lo explico:
Código: DOS
  1. @No tienes permisos para ver links. Registrate o Entra con tu cuenta off
  2. No tienes permisos para ver links. Registrate o Entra con tu cuenta /F "tokens=1" %%A No tienes permisos para ver links. Registrate o Entra con tu cuenta ('No tienes permisos para ver links. Registrate o Entra con tu cuenta.Hola soy Javier') No tienes permisos para ver links. Registrate o Entra con tu cuenta (No tienes permisos para ver links. Registrate o Entra con tu cuenta.%%A)
  3.  
Salida:

El tokens es como querer decir ... Uso el primer string hasta que haya un delimitador(espacio coma o lo que sea)
Es como sinonimo de "palabra"..
Lo que nos dá de salida:
Hola
Pues de la cadena: Hola soy Javier solo usamos el token 1, osea la primera palabra
Hola       soy         Javier
token1   token2     token3
Con el mismo ejemplo pero otros tokens y dos a la vez:
Código: DOS
  1. @No tienes permisos para ver links. Registrate o Entra con tu cuenta off
  2. No tienes permisos para ver links. Registrate o Entra con tu cuenta /F "tokens=2,3" %%A No tienes permisos para ver links. Registrate o Entra con tu cuenta ('No tienes permisos para ver links. Registrate o Entra con tu cuenta.Hola soy Javier') No tienes permisos para ver links. Registrate o Entra con tu cuenta (No tienes permisos para ver links. Registrate o Entra con tu cuenta.%%A %%B)
  3.  

Como ven solo usamos el token 2 y 3 por lo que si declaramos %%A , %%A almacenará el primer token y %%B el segundo token y el Hola no es mostrado
porque no especifiqué el token 1.
Si ponemos "tokens=*" Mostraremos todo el texto...
Manipulando archivos:
Para manipular archivos solo hace falta poner el nombre del archivo, sin apostrofe (')
Código: DOS
  1. @No tienes permisos para ver links. Registrate o Entra con tu cuenta off
  2. No tienes permisos para ver links. Registrate o Entra con tu cuenta /F "tokens=*" %%A No tienes permisos para ver links. Registrate o Entra con tu cuenta (archivo.txt) No tienes permisos para ver links. Registrate o Entra con tu cuenta (No tienes permisos para ver links. Registrate o Entra con tu cuenta.%%A)
  3.  
Lo que nos daría el mismo efecto que un type archivo.txt
Si se fijan y ponen en el archivo.txt:
Código: No tienes permisos para ver links. Registrate o Entra con tu cuenta
Tutorial FOR By JaAViEr
Y en el FOR:
Código: DOS
  1. @No tienes permisos para ver links. Registrate o Entra con tu cuenta off
  2. No tienes permisos para ver links. Registrate o Entra con tu cuenta /F "tokens=1" %%A No tienes permisos para ver links. Registrate o Entra con tu cuenta (archivo.txt) No tienes permisos para ver links. Registrate o Entra con tu cuenta (No tienes permisos para ver links. Registrate o Entra con tu cuenta.%%A)
  3.  

Solo mostrará el primer string del archivo.txt osea Tutorial.
Recuerden que este debe existir primero.
Cuando queremos manipular comandos utilizamos el apostrofe '

Usaremos DIR en este ejemplo, la salida en este PC del comando dir es:

Código: DOS
  1. @No tienes permisos para ver links. Registrate o Entra con tu cuenta off
  2. @No tienes permisos para ver links. Registrate o Entra con tu cuenta off
  3. No tienes permisos para ver links. Registrate o Entra con tu cuenta /F "tokens=1 skip=4" %%A No tienes permisos para ver links. Registrate o Entra con tu cuenta ('No tienes permisos para ver links. Registrate o Entra con tu cuenta') No tienes permisos para ver links. Registrate o Entra con tu cuenta (No tienes permisos para ver links. Registrate o Entra con tu cuenta.%%A)
  4.  

Como ven solo nos dará las fechas ...
El Skip lo explico de inmediato:

pues el token 5 es equivalente a la quinta palabra del "dir" lo que es el nombre de los archivos || carpetas.
En un proximo tutorial Medio - Avanzado explicaré como mezclar
FOR /F con find y otras cosas más.
Por ahora sigo con el SKIP:
En un Archivo tenemos el contenido:
Código: No tienes permisos para ver links. Registrate o Entra con tu cuenta
Hola a
Todos los
del Foro
Y solo queremos mostrar de la segunda línea en adelante y nos queremos saltar la primera línea, para ello especificaremos el skip=1:
Código: DOS
  1. @No tienes permisos para ver links. Registrate o Entra con tu cuenta off
  2. No tienes permisos para ver links. Registrate o Entra con tu cuenta /F "tokens=* skip=1" %%A No tienes permisos para ver links. Registrate o Entra con tu cuenta (archivo.txt) No tienes permisos para ver links. Registrate o Entra con tu cuenta (No tienes permisos para ver links. Registrate o Entra con tu cuenta.%%A)
  3.  
La salida:
Código: No tienes permisos para ver links. Registrate o Entra con tu cuenta
Todos los
del Foro
Dirán algunos... Porqué ?
Explicamos...
tokens=* <- Utilizamos todos los string que estan dentro del archivo...
skip=1 <- Nos saltamos una línea y de ahí en adelante mostrar los strings...
En resumidas palabras el skip=X es para saltarse líneas pero está casi
obsoleto porque utilizamos el FOR /F con FIND y nos simplifica todo, pero
eso es algo que veremos en el tutorial Medio-Avanzado.
Que sucede si cambiamos los tokens y skip del ejemplo anterior  ?:
Código: DOS
  1. @No tienes permisos para ver links. Registrate o Entra con tu cuenta off
  2. No tienes permisos para ver links. Registrate o Entra con tu cuenta /F "tokens=2 skip=2" %%A No tienes permisos para ver links. Registrate o Entra con tu cuenta (archivo.txt) No tienes permisos para ver links. Registrate o Entra con tu cuenta (No tienes permisos para ver links. Registrate o Entra con tu cuenta.%%A)
  3.  
Salida:

Código: No tienes permisos para ver links. Registrate o Entra con tu cuenta
Foro
Porqué ?
pues sencillo nos hemos saltado dos líneas de este contenido
Código: No tienes permisos para ver links. Registrate o Entra con tu cuenta
Hola a
Todos los
del Foro
Lo cual nos deja:
Código: No tienes permisos para ver links. Registrate o Entra con tu cuenta
del Foro
y como expliqué anteriormente y lo vuelvo a hacer...
  del       Foro
token1   token2
Entonces nosotros tomamos ese token2 y lo mostramos en pantalla
Dandonos el resultado : Foro
Pasemos al poco utilizado eol...
Este ejemplo lo haré con un archivo.txt con el contenido:
Código: No tienes permisos para ver links. Registrate o Entra con tu cuenta
Hola chicos
de portalhacker
un saludo
Lo que hace el eol es tomar un caracter como comentario...
ese caracter nosotros lo especificamos así: eol=X
Ojo que este es sensible a mayusculas y minusculas, por lo que
no es lo mismo "H" que "h"
Entonces si ese caracter se encuentra al inicio del token1 de cada
línea, se saltará esa línea porque será tomada de comentario.
Mejor les dejo un ejemplo...
Recuerden que archivo.txt es el contenido anteriormente especificado.
Veamos:
Código: DOS
  1. @No tienes permisos para ver links. Registrate o Entra con tu cuenta off
  2. No tienes permisos para ver links. Registrate o Entra con tu cuenta /F "tokens=* eol=H" %%A No tienes permisos para ver links. Registrate o Entra con tu cuenta (archivo.txt) No tienes permisos para ver links. Registrate o Entra con tu cuenta (
  3. No tienes permisos para ver links. Registrate o Entra con tu cuenta.%%A
  4. )
  5.  
La salida será:
Código: No tienes permisos para ver links. Registrate o Entra con tu cuenta
de portalhacker
un saludo
Porqué ?.
Como anteriormente les dije, si encuentra el caracter de los primeros
en el primer token, toda la línea será tomada como comentario, por lo
que no es mostrada...
Probemos cambiando el eol por eol=d...
Como deberían estár pensando, se saltara la línea
"de portalhacker"
Pues:
  de    portalhacker
token1    token2
Y en el token1 encontró que el primer caracter es "d"...
Ya vieron que sencillo es esto del FOR :D


Ejemplos
Obteniendo IP :
Código: DOS
  1. @No tienes permisos para ver links. Registrate o Entra con tu cuenta off
  2. No tienes permisos para ver links. Registrate o Entra con tu cuenta /F "tokens=14" %%A No tienes permisos para ver links. Registrate o Entra con tu cuenta ('ipconfig ^| find /i "n IP."') No tienes permisos para ver links. Registrate o Entra con tu cuenta (
  3. No tienes permisos para ver links. Registrate o Entra con tu cuenta.%%A
  4. )
  5.  
Obtener solo nombre de archivos y directorios de la carpeta actual:
Código: DOS
  1. @No tienes permisos para ver links. Registrate o Entra con tu cuenta off
  2. No tienes permisos para ver links. Registrate o Entra con tu cuenta /F "tokens=4 skip=7 eol=E" %%A No tienes permisos para ver links. Registrate o Entra con tu cuenta ('No tienes permisos para ver links. Registrate o Entra con tu cuenta') No tienes permisos para ver links. Registrate o Entra con tu cuenta (No tienes permisos para ver links. Registrate o Entra con tu cuenta.%%A)
  3.  

Saludos.
« Última modificación: Octubre 26, 2013, 11:49:39 am por Expermicid »
No tienes permisos para ver links. Registrate o Entra con tu cuenta

Desconectado LucaSthefano

  • *
  • Underc0der
  • Mensajes: 399
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #1 en: Julio 17, 2011, 11:38:04 pm »
Excelente aporte compañero, 100% entendible.

Fijado!

Desconectado JaAViEr

  • *
  • Underc0der
  • Mensajes: 163
  • Actividad:
    0%
  • Reputación 0
  • http://codigo.ga
    • Ver Perfil
    • Blog de Programación :: Python
« Respuesta #2 en: Julio 17, 2011, 11:57:15 pm »
Gracias colega fhano , como no tengo Windows no puedo seguir con el :-\
Pero con lo que recuerdo, sólo pregunten e intentaré guiarlos :D
No tienes permisos para ver links. Registrate o Entra con tu cuenta

Desconectado arthusu

  • *
  • Underc0der
  • Mensajes: 541
  • Actividad:
    8.33%
  • Reputación 2
  • Yo solo se que no se nada - Socrátes
    • Ver Perfil
    • Arthusu BLOG
  • Skype: arthusuxD
« Respuesta #3 en: Agosto 28, 2011, 05:21:33 pm »
me quede con una duda en la parte de este codigo:
Obteniendo IP :
Código: DOS
@echo off
FOR /F "tokens=14" %%A IN ('ipconfig ^| find /i "n IP."') DO (
echo.%%A
)

que significa ^| ?
saludos y gracias de antemano :D

Desconectado arthusu

  • *
  • Underc0der
  • Mensajes: 541
  • Actividad:
    8.33%
  • Reputación 2
  • Yo solo se que no se nada - Socrátes
    • Ver Perfil
    • Arthusu BLOG
  • Skype: arthusuxD
« Respuesta #4 en: Agosto 28, 2011, 05:40:39 pm »
No tienes permisos para ver links. Registrate o Entra con tu cuenta
me quede con una duda en la parte de este codigo:
Obteniendo IP :
Código: DOS
@echo off
FOR /F "tokens=14" %%A IN ('ipconfig ^| find /i "n IP."') DO (
echo.%%A
)

que significa ^| ?
saludos y gracias de antemano :D
ya! estuve buscando y  | es un or pero para volcar se escribe ^| saludos buen post ;D

Desconectado JaAViEr

  • *
  • Underc0der
  • Mensajes: 163
  • Actividad:
    0%
  • Reputación 0
  • http://codigo.ga
    • Ver Perfil
    • Blog de Programación :: Python
« Respuesta #5 en: Septiembre 05, 2011, 04:04:46 pm »
el ^ antes del | es para que sea tomado como realmente un | y no
un simple texto, ya que al tener solo el | dentro del FOR , lo toma como
texto y no para la función del ^|


Saludos.
No tienes permisos para ver links. Registrate o Entra con tu cuenta

 

¿Te gustó el post? COMPARTILO!



[Código-Batch] Consola de Comandos Versión Arcoiris - JaAViEr

Iniciado por JaAViEr

Respuestas: 0
Vistas: 1417
Último mensaje Julio 17, 2011, 05:29:39 am
por JaAViEr
[Código-Batch] Usuarios del PC & Procesos Ejecución - WMIC - JaAViEr

Iniciado por JaAViEr

Respuestas: 0
Vistas: 1167
Último mensaje Julio 17, 2011, 05:21:18 am
por JaAViEr
Detecta Autorun.Inf + Eliminación de Archivo Infectado - JaAViEr - Batch

Iniciado por JaAViEr

Respuestas: 4
Vistas: 2082
Último mensaje Julio 18, 2011, 06:36:47 pm
por LucaSthefano
[Código-Batch] Saber si un número es entero - JaAViEr

Iniciado por JaAViEr

Respuestas: 0
Vistas: 1145
Último mensaje Julio 17, 2011, 05:19:17 am
por JaAViEr
[Código-Batch] HEX To ASCII V2 5 Líneas - JaAViEr

Iniciado por JaAViEr

Respuestas: 0
Vistas: 989
Último mensaje Julio 17, 2011, 05:23:33 am
por JaAViEr