Bueno esto realmente me sorprendio, segun mi experiencia haciendo scripts en Batch, pense que el siguiente script generaria algo como esto :
ALLUSERSPROFILE
APPDATA
CLIENTNAME
CommonProgramFiles
COMPUTERNAME
ComSpec
Desktop
FP_NO_HOST_CHECK
HOMEDRIVE
HOMEPATH
LOGONSERVER
NUMBER_OF_PROCESSORS
OS
Path
PATHEXT
PROCESSOR_ARCHITECTURE
PROCESSOR_IDENTIFIER
PROCESSOR_LEVEL
PROCESSOR_REVISION
ProgramFiles
PROMPT
SESSIONNAME
SystemDrive
SystemRoot
TEMP
TMP
USERDOMAIN
USERNAME
USERPROFILE
windir
Presione una tecla para continuar . . .
@ECHO OFF
FOR /F "TOKENS=1 DELIMS==" %%X IN ('SET') DO (
ECHO.%%X
)&PAUSE
Pero da un comportamiento inesperado :
ALLUSERSPROFILE
Presione una tecla para continuar . . .
APPDATA
Presione una tecla para continuar . . .
CLIENTNAME
Presione una tecla para continuar . . .
CommonProgramFiles
Presione una tecla para continuar . . .
COMPUTERNAME
Presione una tecla para continuar . . .
ComSpec
Presione una tecla para continuar . . .
Desktop
Presione una tecla para continuar . . .
FP_NO_HOST_CHECK
Presione una tecla para continuar . . .
HOMEDRIVE
Presione una tecla para continuar . . .
HOMEPATH
Presione una tecla para continuar . . .
LOGONSERVER
Presione una tecla para continuar . . .
NUMBER_OF_PROCESSORS
Presione una tecla para continuar . . .
OS
Presione una tecla para continuar . . .
Path
Presione una tecla para continuar . . .
PATHEXT
Presione una tecla para continuar . . .
PROCESSOR_ARCHITECTURE
Presione una tecla para continuar . . .
PROCESSOR_IDENTIFIER
Presione una tecla para continuar . . .
PROCESSOR_LEVEL
Presione una tecla para continuar . . .
PROCESSOR_REVISION
Presione una tecla para continuar . . .
ProgramFiles
Presione una tecla para continuar . . .
...
Aqui se ve que el for esta cerrado ya (con el ")" ) :
)&PAUSE
Pero funciona como si fuera de esta manera :
@ECHO OFF
FOR /F "TOKENS=1 DELIMS==" %%X IN ('SET') DO (
ECHO.%%X
PAUSE
)
Otro ejemplo de uso es con el argumento /L :
@ECHO OFF
FOR /L %%X IN (1,1,10) DO (
ECHO.%%X
)&PAUSE
Saludos a todos.
mmm..., que raro.
tambien
@echo off
for /L %%a in (1,1,10) do (
echo %%X
)&Msg * Prueba
sale las 10 veces el Msg... parece que no lo cierra bien al For... ni idea :xD
no se muy bien si te interesa esa estructura en particular.
Yo pienso que el problema es del "&"
Asi me funciona perfecto
@ECHO OFF
FOR /F "TOKENS=1 DELIMS==" %%X IN ('SET') DO (
ECHO.%%X
)
pause
saludos
Cita de: kraszic en 28 Diciembre 2008, 23:52 PM
no se muy bien si te interesa esa estructura en particular.
Yo pienso que el problema es del "&"
Asi me funciona perfecto
@ECHO OFF
FOR /F "TOKENS=1 DELIMS==" %%X IN ('SET') DO (
ECHO.%%X
)
pause
saludos
Creo que no me explique, se bien como funciona el FOR.
El post no era una duda ni un problema, era solo para relatar el comportamiento de :
)&PAUSE
ya se q lo q querias era solo explicarlo.
Yo solo te he dicho q pienso q el problema es del "&" parece como si el ")" tiene q estar al final de la linia.
Si te fijas, el problema no lo da solo con el pause, prueba a poner ")&cualquiercomando" y ya veras como tambien pasa lo mismo.
Ejemplo
@ECHO OFF
FOR /F "TOKENS=1 DELIMS==" %%X IN ('SET') DO (
ECHO.%%X
)&echo loquesea
pause
Seguramente es un error q no tendria q pasar pero se habra pasado por alto...
saludos
&, |, etc.. unen 2 comandos en uno solo, por lo que
DO (lalala...)&otracosa
hacen el comando (lalala...)&otracosa
es decir, el hecho de que pensaras que se ejecutaria al final es incorrecto, si quisieras eso, tendrias que concatenar el &pause al comando for
(FOR ... DO (...))&pause