A questão é a resposta. Você está claramente usando o interpretador de comandos cmd
da Microsoft no Windows NT; e nesse interpretador de comandos setlocal
de fato não tem efeito quando invocado com um script de comando.
Outros interpretadores de comandos diferem, em que setlocal
, se pode ser invocado com um script de comando, se é ninho e se controla as coisas que você está tentando controlar.
O setlocal
original, no cmd
da Microsoft no OS / 2 versão 1, acabou de salvar a unidade, o diretório e o ambiente atuais; não teve efeito fora dos scripts de comando; e não aninhou. Como você pode ver, no último quarto de século, o comando foi estendido em diferentes direções.
Uma razão para a diferença aqui é que o TCC da JP Software realiza uma expansão variável progressivamente em comandos compostos, e não precisa do truque de expansão de variável atrasada para fazer o que você está tentando fazer. Isso:
for /l %i in (1,1,3) do (set text=%i & echo Hello %text%)… imprime o que você deseja imprimir.
Leitura adicional
-
SETLOCAL
. Referência de linha de comando do Windows XP A – Z. TechNet. Corporação Microsoft. -
SETLOCAL
. Tome a ajuda do comando / TCC. Software JP. - Jonathan de Boyne Pollard.
SETLOCAL
. Referência de Comando do Interpretador de Comando de 32 Bits. - %código%. Referência do comando OS / 2 Warp. IBM Corporation.
- J. Emmett Beam (1988). OS / 2 ilustrado . Publicação de Wordware. ISBN 9781556220531. p. 40