A entrada do usuário no Batch não funciona no Windows 8, ou estou errado?

0
@ECHO OFF
CLS

SET ad =
SET /p ad = Do you want to [A] Allow or [D] Deny? 
ECHO "%ad%"

Eu digito A e pressiono Enter , e a saída que recebo é:

Do you want to [A] Allow or [D] Deny?
""

Por que isso não funciona?

    
por Student of Hogwarts 10.02.2013 / 15:24

2 respostas

5

Você não está definindo %ad% . Você está configurando %ad % .

Algumas linguagens são mais seletivas sobre espaços em branco do que outras. A linguagem de script cmd.exe é uma delas - a sintaxe para definir uma variável é set name=value e, se você adicionar espaços em torno de = , eles se tornarão parte do nome e valor da variável .

Se você estiver escrevendo o script apenas para o Windows 7/8, recomendo strongmente o aprendizado do PowerShell. A linguagem usada pelo cmd.exe é horrível .

    
por 10.02.2013 / 15:28
3

O processador de comandos no Windows 8 não mudou do Windows 7, tanto quanto eu sei

Tudo até o sinal de igual faz parte do nome da variável. Portanto, nesse caso, o nome da variável é, na verdade, "ad " sem as aspas. Você pode ver as variáveis de ambiente atuais com o comando set sem nenhum parâmetro - isso é muito útil para depuração.

    
por 10.02.2013 / 15:29