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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Batch] for /R y for /D
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [Batch] for /R y for /D  (Leído 8,083 veces)
‡‡‡ Ðξλ†Ћ Щλ†ζЋ ‡‡‡

Desconectado Desconectado

Mensajes: 56



Ver Perfil
[Batch] for /R y for /D
« en: 1 Marzo 2009, 12:51 pm »

Hola, que tal: :D

Antes que nada, disculpen la pregunta tan basica, pero no he encontrado la respuesta...  :-[

Para que sirve for /R y for /D en batch?  :-[

He buscado en el foro y en google, pero he encontrado ejemplos o ejercicios usando tales metodos, mas no su uso. Si me pudieran ayudar, por favor?

De antemano, muchas gracias..

Un saludo  :D


« Última modificación: 1 Marzo 2009, 22:10 pm por sirdarckcat » En línea

0x0309

Desconectado Desconectado

Mensajes: 215


Ver Perfil
Re: for /R y for /D en batch?
« Respuesta #1 en: 1 Marzo 2009, 17:55 pm »

Código:
http://www.ss64.com/nt/for_d.html
Código:
http://www.ss64.com/nt/for_r.html


En línea

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

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: for /R y for /D en batch?
« Respuesta #2 en: 1 Marzo 2009, 18:31 pm »

Algunos ejemplos basicos :
Código:
@echo off
set /a contador=0
for /r %homedrive%\ %%. in (*) do (
set /a contador+=1
)
msg * Archivos = %contador%

Código:
for /r %homedrive%\ %%. in (*.doc) do (
echo.%%.
)

Código:
for /r %homedrive%\ %%. in (*.vbs *.doc *.txt *.exe) do (
echo.%%.
)

Código:
@echo off
msg * Carpetas
for /d /r "%homedrive%\" %%. in (*) do (
echo.%%.
)
Saludos.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
‡‡‡ Ðξλ†Ћ Щλ†ζЋ ‡‡‡

Desconectado Desconectado

Mensajes: 56



Ver Perfil
Re: [Batch] for /R y for /D
« Respuesta #3 en: 2 Marzo 2009, 08:21 am »

Les agradezco su tiempo y la respuesta tan rapida  :D

Necesito leerlos con tiempo y hacer ejercicios.

Ya si tengo otra duda, los vuelvo a molestar  :P

Gracias. Saludos
En línea

‡‡‡ Ðξλ†Ћ Щλ†ζЋ ‡‡‡

Desconectado Desconectado

Mensajes: 56



Ver Perfil
Re: [Batch] for /R y for /D
« Respuesta #4 en: 8 Marzo 2009, 01:24 am »

FOR /F ["options"] %%parameter IN (filenameset) DO command
FOR /F ["options"] %%parameter IN ("Text string to process") DO command

Sigo sin entenderlo
Como se usa delims, tokens y eol

Perdon pero tampoco entiendo que es %%.
En línea

0x0309

Desconectado Desconectado

Mensajes: 215


Ver Perfil
Re: [Batch] for /R y for /D
« Respuesta #5 en: 8 Marzo 2009, 04:49 am »

tengo un artículo exclusivo para una ezine que trata sobre el comando for, si quieres te lo facilito, pero con el compromiso de que no lo publiques en ninguna parte.
En línea

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

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: [Batch] for /R y for /D
« Respuesta #6 en: 8 Marzo 2009, 05:04 am »

Te dejaré algunos ejemplos :
Código:
@echo off
:: Mostrar Hola %username%
for /f "tokens=1,4" %%a in ("Hola Adios Bye %username%") do (
echo.%%a %%b
)
(
El tokens 1 : "Hola"
El tokens 4 : %username%
Si hubiera querido mostrar "Adios", hubiera usado el tokens 2
Código:
@echo off
:: Mostrar XP en Pantalla, con el comando Ver y For
for /f "tokens=3" %%* in ('ver ^| findstr /r /v "^$"') do (
echo.%%*
)
(
Puedes usar cualquier caracter en %% pero teniendo cuidado si es algun caracter especial.
Igual dentro de ^(^), debes de anteponer el acento circunflejo "^" si es un caracter especial.

Para ilustrar el uso de eol, supongamos que tenemos un archivo de texto (file.txt) con este contenido:
Código:
Agua
Sal
Leche
Cafe
:Soda
Cerveza

Y queremos mostrar solo las lineas que no contengan ":" al principio de la linea :
Código:
for /f "tokens=* eol=:" %%x in (file.txt) do (
echo.%%x
)

Salida :
Código:
Agua
Sal
Leche
Cafe
Cerveza
El eol por defecto omite las lineas que empiecen con ";", para quitar esto debe de especificarse :
Código:
"eol="
Tambien se habria mediante esto :
Código:
type "file.txt" | findstr /r /v "^:"

Pero no viene al caso.

El %% se usa en el comando For, en modo Script, en modo consola debe ser solo %, el %% puede ser precedido de cualquier caracter, pero teniendo en cuenta que si es un caracter especial, debe usarse ^ antes de dicho caracter.

Cualquier duda dices.

Saludos.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
‡‡‡ Ðξλ†Ћ Щλ†ζЋ ‡‡‡

Desconectado Desconectado

Mensajes: 56



Ver Perfil
Re: [Batch] for /R y for /D
« Respuesta #7 en: 8 Marzo 2009, 05:15 am »

0x0309:
Prometido men  :-X  :-X  :-X
Y no te preocupes, de por si no soy chismoso ni "ojaldra"
Solo quiero seguir aprendiendo  :).

Te lo agradezco  :D
P.D. Mi correo esta a la vista de los foreros. Es el correo lo que necesitas?

Leo Gutierrez:
Igualmente gracias por tu tiempo y tu respuesta.

En estos momentos estoy haciendo ejercicios probando lo que me comentas, y por lo que veo, va a ser de mucha ayuda  :laugh:.

Gracias a ambos
Un saludo
En línea

‡‡‡ Ðξλ†Ћ Щλ†ζЋ ‡‡‡

Desconectado Desconectado

Mensajes: 56



Ver Perfil
Re: [Batch] for /R y for /D
« Respuesta #8 en: 8 Marzo 2009, 07:52 am »

Otra vez con unas dudas  :-[  :-\
(yo se que no se van a poner a darme clases, solo necesito que me digan si voy bien, por decir, ejemplo 1 es correcto, ejemplo 2 no es correcto)

Por ejemplo, en un archivo llamado x2.txt que contiene

A1 A2 A3 A4 A5 A6 A7
;B1 B2 B3 B4 B5 B6 B7
:C1 C2 C3 C4 C5 C6 C7
@D1 D2 D3 D4 D5 D6 D7

Con

Código
  1. for /F "tokens=3* eol=" %%b in (x2.txt) do (
  2. echo %%b %%c
  3. )
Se tendrían que declarar 2 variables (%%b y %%c), por decirlo asi, una para el 3 y otra para *, cierto?

De igual forma, en

Código
  1. for /F "tokens=2,4* eol=" %%b in (x2.txt) do (
  2. echo %%b %%c %%d
  3. )
Se tendrían que declarar ahora 3 variables (%%b, %%c y %%d), por decirlo asi, una para el 2, otra para el 4, y otra para *, estoy bien?

En

Código
  1. for /F "tokens=2-5 eol=" %%b in (x2.txt) do (
  2. echo %%b %%c %%d %%e
  3. )
Para que se mostrarán los elementos del 2 al 5, se tendrían que declarar variables para 2, 3, 4 y 5, es correcto?

Por ultimo

Código
  1. for /F "tokens=2-4* eol=" %%b in (x2.txt) do (
  2. echo %%b %%c %%d %%e
  3. )
La sintaxis mas facil sería 2* en lugar de 2-4*, pero igual con alguna variación pudiera aplicarse, por eso se los pregunto: serían necesarias todas esas variables para mostrar del 2 al 7?

Si escribo

Código
  1. for /F "delims=2 eol=" %%b in (x2.txt) do (
  2. echo %%b
  3. )

Se muestra
A1 A
;B1 B
:C1 C
@D1 D
Esto es porque muestra hasta donde encuentra un 2, cierto?

Con

Código
  1. for /F "delims=A eol=" %%b in (x2.txt) do (
  2. echo %%b
  3. )

Se muestra
1
;B1 B2 B3 B4 B5 B6 B7
:C1 C2 C3 C4 C5 C6 C7
@D1 D2 D3 D4 D5 D6 D7
Y aqui, porque si la primera linea empieza con A, porque mostró 1?

Disculpen tantas preguntas, pero creo que ya voy por menos, por lo menos en lo que es un conocimiento y uso basico de batch
En línea

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

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: [Batch] for /R y for /D
« Respuesta #9 en: 8 Marzo 2009, 08:42 am »

Todo lo que planteas es correcto.
Citar
Se muestra
1
;B1 B2 B3 B4 B5 B6 B7
:C1 C2 C3 C4 C5 C6 C7
@D1 D2 D3 D4 D5 D6 D7
Y aqui, porque si la primera linea empieza con A, porque mostró 1?

Disculpen tantas preguntas, pero creo que ya voy por menos, por lo menos en lo que es un conocimiento y uso basico de batch

El contenido de tu archivo es :
Código:
A1 A2 A3 A4 A5 A6 A7
;B1 B2 B3 B4 B5 B6 B7
:C1 C2 C3 C4 C5 C6 C7
@D1 D2 D3 D4 D5 D6 D7

La primea linea :
Código:
A1 A2 A3 A4 A5 A6 A7

Con tu codigo, lo delimitas, es decir, pones el caracter 'A' como delimitador, por que solo mostró el 1?

Por que no especificaste que tokens usar, prueba esto :
Código:
for /F "delims=A tokens=* eol=" %%b in (x2.txt) do (
echo %%b
)
La salida :
Código:
1 A2 A3 A4 A5 A6 A7
B1 B2 B3 B4 B5 B6 B7
C1 C2 C3 C4 C5 C6 C7
D1 D2 D3 D4 D5 D6 D7

con el tokens=*, especificas que muestre todo, todo lo que esta despues del delimitador=A.

Espero y me haya entendido  :-\
Saludos.
« Última modificación: 8 Marzo 2009, 08:49 am por Leo Gutierrez. » En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

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