FOR funciona no prompt, mas não no arquivo de script?

1

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?

    
por RBarryYoung 15.01.2013 / 22:38

1 resposta

3

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.
    
por 15.01.2013 / 22:44