No estoy seguro de por qué ejecutar este comando desde el indicador no funciona. ¿Solo se puede llamar a setlocal desde un archivo por lotes?
setlocal EnableDelayedExpansion & for /l %i in (1,1,3) do (set text=%i & echo Hello !text!)
El resultado esperado es:
Hola 1
Hola 2
Hola 3
ACTUALIZAR: Estoy usando Windows 8.1
Respuesta1
La pregunta es la respuesta. Claramente estás usando cmd
el intérprete de comandos de Microsoft en Windows NT; y en ese caso, el intérprete de comandos setlocal
no tiene ningún efecto cuando se invoca sin un script de comando.
Otros intérpretes de comandos difieren en lo que setlocal
hace, en si se puede invocar sin un script de comando, en si se anida y en si controla las cosas que usted está tratando de controlar.
El original setlocal
, en Microsoft cmd
en OS/2 versión 1, simplemente guarda la unidad, el directorio y el entorno actuales; no tuvo ningún efecto sin los scripts de comando; y no anidó. Como se puede ver, durante el último cuarto de siglo el mando se ha extendido en diferentes direcciones.
Una razón para la diferencia aquí es que el TCC de JP Software realiza una expansión variable progresivamente en comandos compuestos y no necesita el truco de expansión variable retrasada para hacer lo que usted está tratando de hacer. Este:
para /l %i en (1,1,3) hacer (establecer texto=%i y eco Hola %text%)… imprime lo que desea imprimir.
Otras lecturas
SETLOCAL
.Referencia de la línea de comandos de Windows XP A–Z. TechNet. Corporación Microsoft.SETLOCAL
. Tomar comando / ayuda TCC. Software JP.- Jonathan de Boyne Pollard.
SETLOCAL
. Referencia de comandos del intérprete de comandos de 32 bits. SETLOCAL
. Referencia del comando Warp de OS/2. Corporación IBM.- Haz J. Emmett (1988).OS/2 ilustrado. Publicación de textos. ISBN 9781556220531. pág. 40
Respuesta2
¡La respuesta resultó ser bastante simple!
para /l %i en (1,1,3) hacer (llamar a set text=%i & echo Hola %text%)