Tenha o .bat pedir mais informações

0

Se eu terminar uma linha em cmd com ^ , ele solicitará mais informações.

D:\some\folders>do ^
More? stuff

Digamos que eu não queira inserir do toda vez que eu quero fazer coisas, então eu coloco em um .bat, e digamos que o stuff que eu quero fazer varia a cada vez. Então eu crio o seguinte arquivo .bat:

do ^

e eu o executo e espero que ele peça More? para que eu possa inserir meu stuff . Mas isso não acontece. Não faz nada por toda a eternidade. Como faço para que funcione?

    
por Blrp 20.04.2016 / 19:55

2 respostas

1

O caractere ^ é o arquivo em lote "escape" . Quando usado sozinho no final de uma linha, ele se torna um caractere de continuação de linha , usado para tratar várias linhas como uma única linha.

Então, em um arquivo de lote, se você colocar

echo This ^
is a single ^
line!

Ele trata como uma única linha, equivalente a:

echo This is a single line!

Se não houver "próxima linha" no lote, como em seu exemplo de lote de linha única de do ^ , não há próxima linha a ser anexada, portanto ela não acrescenta nada (e, portanto, parece não fazer nada).

Quando você usa a continuação de linha ^ em um prompt de comando, ele mostrará o prompt More? porque você disse que deseja continuar o comando na próxima linha, ponto em que você pode continuar o comando Por exemplo:

Y:\>echo This ^
More? is a single ^
More? line!
This is a single line!

Para que um arquivo em lote pare e solicite a entrada, você deve procurar usar set /p , que solicitará a entrada e, em seguida, atribuirá essa entrada a uma variável. por exemplo:

set /P name="What Is Your Name? "
echo Hello %name%!
    
por 20.04.2016 / 20:09
0

Se você quiser que um lote solicite a entrada, você usará o comando set / p. Por exemplo, para criar uma variável% stuff% você pode usar no lote, o comando ficaria assim.

set /p stuff=What stuff do you want to do?:

Isto irá colocar o prompt "Que coisas você quer fazer?" e você pode inserir as coisas, então elas estarão na variável% stuff% que você pode usar em outro lugar no seu script.

    
por 20.04.2016 / 20:58