Questão Como inserir automaticamente no arquivo BATch no DOS?


Eu quero executar um comando que solicite um argumento, posso fazer um arquivo BATch que execute este comando e, em seguida, aguarde um segundo e "escrever" ou "digitar" automaticamente (como uma pessoa viva) o argumento? Obrigado.


4


origem


Não com comandos embutidos. Você precisaria de um programa de terceiros para enviar as chaves para o console. - Synetech
Eu recomendo altamente Autoit! para este tipo de tarefa. Na verdade, o que eu recomendo é encontrar uma maneira não-sendkeys para fazer o que você precisa fazer, mas para usar o Autoit! se você não tem outra opção. - EBGreen
Você realmente quer dizer MS-DOS, ao contrário de (digamos) Win32? Ou você está cometendo o erro comum de conflitando interface de usuário textual e sistema operacional? Se este último, que sistema operacional você realmente significar? Em qual sistema operacional o seu comando (sem nome, solicitando entrada) é executado nativamente? - JdeBP


Respostas:


Se o comando ler de stdin:

echo some text| command

(echo some text& echo line two) | command

Se o comando lê do console especificamente - você não pode.


8





O comando CHOICE lhe dá a capacidade de definir uma opção padrão após um tempo limite especificado:

CHOICE [/C choices] [/N] [/CS] [/T timeout /D choice] [/M text]

Description:
    This tool allows users to select one item from a list
    of choices and returns the index of the selected choice.

Parameter List:
   /C    choices       Specifies the list of choices to be created.
                       Default list is "YN".

   /N                  Hides the list of choices in the prompt.
                       The message before the prompt is displayed
                       and the choices are still enabled.

   /CS                 Enables case-sensitive choices to be selected.
                       By default, the utility is case-insensitive.

   /T    timeout       The number of seconds to pause before a default
                       choice is made. Acceptable values are from 0 to
                       9999. If 0 is specified, there will be no pause
                       and the default choice is selected.

   /D    choice        Specifies the default choice after nnnn seconds.
                       Character must be in the set of choices specified
                       by /C option and must also specify nnnn with /T.

   /M    text          Specifies the message to be displayed before
                       the prompt. If not specified, the utility
                       displays only a prompt.

   /?                  Displays this help message.

   NOTE:
   The ERRORLEVEL environment variable is set to the index of the
   key that was selected from the set of choices. The first choice
   listed returns a value of 1, the second a value of 2, and so on.
   If the user presses a key that is not a valid choice, the tool
   sounds a warning beep. If tool detects an error condition,
   it returns an ERRORLEVEL value of 255. If the user presses
   CTRL+BREAK or CTRL+C, the tool returns an ERRORLEVEL value
   of 0. When you use ERRORLEVEL parameters in a batch program, list
   them in decreasing order.

Examples:
   CHOICE /?
   CHOICE /C YNC /M "Press Y for Yes, N for No or C for Cancel."
   CHOICE /T 10 /C ync /CS /D y
   CHOICE /C ab /M "Select a for option 1 and b for option 2."
   CHOICE /C ab /N /M "Select a for option 1 and b for option 2."

Então, neste caso, você poderia simplesmente digitar algo como CHOICE /T 10 /C ync /D y /M "Do you wish to proceed [yes]?"e depois de 10 segundos, simplesmente escolheria Sim para você.


2



Obrigado. Existe alguma maneira de digitar uma palavra? - Leandro Tupone
Infelizmente não, a escolha só lhe dá as opções, com o padrão para ser uma única letra / número de sua escolha. - zackrspv
existem outros ambientes de script, como .NET, autoIT, autoHotkey, que podem ser benéficos para você; a menos que você possa fornecer mais detalhes, é difícil responder totalmente a essa pergunta. - zackrspv
Você tem o final errado da vara. O questionador não deseja solicitar a entrada xyrself. Xe quer Programaticamente responder a um prompt para entrada em um programa existente. - JdeBP
Eu também a leio errado no começo, e foi sobre a construção uma resposta similar, ou apontar para onde aquela questão devo foram perguntados e respondidos antes, quando eu disse para mim mesmo "Espere um minuto! ...". - JdeBP