Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: nhaalclkiemr en 23 Mayo 2007, 19:10 pm



Título: Pasarle la variable %%A de un FOR a un segundo FOR
Publicado por: nhaalclkiemr en 23 Mayo 2007, 19:10 pm
Como puedo solucionar esto?

Código:
for /D %%A IN (C:\*) DO for /R "%%A" %%Q IN (*) DO echo "%%Q" | find "archivo" >> tmp.tmp

Lo que quiero hacer es cojer de C:\ la lista de directorios con un FOR y pasarselo a otro FOR que realizará una accion en sus subcarpetas.
Ya sé k como con FOR /D voy a conseguir las subcarpetaas y despues voy a analizar estas se podría hacer de esta manera:

Código:
for /R "C:\" %%Q IN (*) DO echo "%%Q" | find "archivo" >> tmp.tmp

Pero esto no me sirve por unas razones, concretamente pork hay carpetas de C:\ que quiero excluír...es decir, el primer for guarda en %%A las subcarpetas de C:\ y despues le pasa al segundo FOR las subcarpetas que por ejemplo cumplan un cierto atributo...pero esto no importa...la cuestion es komo puedo pasarle la variable %%A a el segundo FOR, puesto que en el code que puse al principio %%A no se expande...Yo prové varias maneras pero nada:

Código:
for /D %%A IN (C:\*) DO (for /R "%%A" %%Q IN (*) DO echo "%%Q" | find "archivo" >> tmp.tmp)

Código:
for /D %%A IN (C:\*) DO (
for /R "%%A" %%Q IN (*) DO echo "%%Q" | find "archivo" >> tmp.tmp
)

Código:
for /D %%A IN (C:\*) DO (
for /R "!!A" %%Q IN (*) DO echo "%%Q" | find "archivo" >> tmp.tmp
)

Código:
for /D %%A IN (C:\*) DO (
set tm=%%A
for /R "%tm%" %%Q IN (*) DO echo "%%Q" | find "archivo" >> tmp.tmp
)

Código:
for /D %%A IN (C:\*) DO (
set tm=%%A
for /R "!tm!" %%Q IN (*) DO echo "%%Q" | find "archivo" >> tmp.tmp
)

Pues ninguno de estos me funciona, por el tema de las extensiones de comando para usar !variable! ya lo habia comentado aki y no me funcionaba eso de que dentro de un parentesis si pones !variable! y tienes las extensiones de comando activadas...eso lo digo por los dos ultimos ejemplos k puse k no funcionan sobre todo...



¿¿Posibles soluciones?? :huh: :huh:


Título: Re: Pasarle la variable %%A de un FOR a un segundo FOR
Publicado por: sirdarckcat en 24 Mayo 2007, 02:09 am
usa funciones :P
cuando mandas llamar:
Código:
for /D %%A IN (C:\*) DO (
     funcion %%A
)
goto:EOF
:funcion
for /R "%1" %%Q IN (*) DO  (
     echo "%%Q" | find "archivo" >> tmp.tmp
)
es una forma no documentada de expandir variables.

Saludos!!