Aqui está uma parte da saída help for
cmd:
To use the FOR command in a batch program, specify %%variable instead
of %variable. Variable names are case sensitive, so %i is different
from %I.
Como parte de uma tarefa em que estou trabalhando para um cliente, preciso fazer algumas modificações no script de logon corporativo. A linha de comando do Windows definitivamente não é minha área de especialização, mas estou bem com a maior parte dela. No entanto, estou encontrando o seguinte comportamento inconsistente, que não consigo entender.
Os seguintes comandos:
Set TMP=
For /f "tokens=1,2,3 delims=:" %A in ('ipconfig ^| Find "Default Gateway" ^| Findstr/N "."') do (If not defined TMP Set TMP=%~C)
Quando executado no prompt de comando (uma janela do Windows 7 CMD.EXE), funcione como esperado e o TMP seja definido com o endereço IP do meu gateway padrão. No entanto, se eu executar exatamente os mesmos comandos de um arquivo CMD, na mesma janela , ele falhará com a seguinte saída (Echo On):
>Set TMP=
~C) was unexpected at this time.
>For /f "tokens=1,2,3 delims=:" ~C)
Eu tentei chamar e executar o script diretamente. Eu tentei com e sem usebackq
e com e sem o parêntese após o DO
, com os mesmos resultados sempre: ele funciona interativamente, mas não de um script na mesma sessão.
O que diabos está acontecendo aqui e como posso consertar isso?