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

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Batch] For dentro de for
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Batch] For dentro de for  (Leído 2,792 veces)
0x0309

Desconectado Desconectado

Mensajes: 215


Ver Perfil
[Batch] For dentro de for
« en: 25 Junio 2009, 09:58 am »

Hace tiempo que quería hacer un for dentro de otro for, y por fin me resultó, solo tenía que escapar los paréntesis.

Aquí una utilidad:

Código:
@echo off
setlocal enabledelayedexpansion

set desordenados=100 008 066 077 000 520
call :ordenar %desordenados%
echo.Desordenados:%desordenados%
echo.Ordenados:%ordenados%
pause
goto :eof

:ordenar
for /f "tokens=*" %%a in (
'
^(for %%_ in ^(%*^) do @echo.%%_^)^|sort
'
) do set ordenados=!ordenados!%%a

goto :eof

De esa forma se evita tener que escribir a un archivo, puede que tenga más utilidades.


En línea

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

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: [Batch] For dentro de for
« Respuesta #1 en: 25 Junio 2009, 20:45 pm »

Que bien, no se me había ocurrido  :D

No hace falta escapar '(', solo ')'.

Salida:
Código
  1. @echo off
  2. setlocal enabledelayedexpansion
  3.  
  4. set desordenados=100 008 066 077 000 520
  5. call :ordenar %desordenados%
  6. echo.Desordenados:%desordenados%
  7. echo.Ordenados:%ordenados%
  8. goto :eof
  9.  
  10. :ordenar
  11. for /f "tokens=*" %%a in (
  12. '
  13. (for %%_ in (%*^) do @echo.%%_^)^|sort
  14. '
  15. ) do set ordenados=!ordenados!%% style="color: #448888;">a
  16.  
  17. goto :eof
Salida:
Código:
Desordenados:100 008 066 077 000 520
Ordenados:000 008 066 077 100 520
Presione una tecla para continuar . . .

Saludos, 0x0309.


En línea

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

Desconectado Desconectado

Mensajes: 181


:P


Ver Perfil WWW
Re: [Batch] For dentro de for
« Respuesta #2 en: 27 Junio 2009, 20:37 pm »

No solamente con un FOR, sino con los demas comandos que pueden necesitar de paentesis....ya lo habia probado asi "escapando" los parentesis...

Código
  1. :getlabel
  2. for /f "tokens=8" %%a in ('^(echo USB^)^|label /MP %1:^|find "unidad"') do (set label=%%a)
  3. if "%label%"=="tiene" set label=Unidad
  4. (echo %label%)|label /MP %1:>nul
  5. if "%label%"=="Unidad" set label=USB
  6. goto :eof

Saludos.
En línea


Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Batch]No consigo que funcione una variable dentro de un for
Scripting
teamcpc 1 3,289 Último mensaje 15 Enero 2011, 18:06 pm
por leogtz
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines