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:
@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.
Que bien, no se me había ocurrido :D
No hace falta escapar '(', solo ')'.
Salida:
@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
Salida:
Desordenados:100 008 066 077 000 520
Ordenados:000 008 066 077 100 520
Presione una tecla para continuar . . .
Saludos, 0x0309.
No solamente con un FOR, sino con los demas comandos que pueden necesitar de paentesis....ya lo habia probado asi "escapando" los parentesis...
:getlabel
for /f "tokens=8" %%a in ('^(echo USB^)^|label /MP %1:^|find "unidad"') do (set label=%%a)
if "%label%"=="tiene" set label=Unidad
(echo %label%)|label /MP %1:>nul
if "%label%"=="Unidad" set label=USB
goto :eof
Saludos.