496 votes

Dans la commande cmd de Windows, comment puis-je demander à l'utilisateur de saisir des données et utiliser le résultat dans une autre commande ?

J'ai un fichier Windows .bat dans lequel j'aimerais accepter les entrées de l'utilisateur et utiliser les résultats de ces entrées dans le cadre de l'appel de commandes supplémentaires.

Par exemple, j'aimerais accepter un ID de processus de la part de l'utilisateur, puis exécuter jstack par rapport à cet ID, en plaçant les résultats de l'appel jstack dans un fichier. Cependant, lorsque j'essaie cela, cela ne fonctionne pas.

Voici le contenu de mon exemple de fichier bat :

@echo off
set /p id=Enter ID: 
echo %id%
jstack > jstack.txt

et voici ce qui apparaît dans jstack.txt :

Enter ID: Terminate batch job (Y/N)?

588voto

Instantsoup Points 6428

Essayez ça :

@echo off
set /p id="Enter ID: " %=%

Vous pouvez ensuite utiliser %id% comme paramètre d'un autre fichier batch. Par exemple :

jstack %id%

EDIT : Cela fonctionne très bien pour moi. Désolé, je ne peux pas vous aider davantage.

set /P id=Enter id: %=%
jstack %id% > jstack.txt

121voto

jayfessenden Points 425

La syntaxe est la suivante : set /p variable= [string]

Notez l'espace après le signe égal (=).

Vérifiez http://commandwindows.com/batch.htm o http://www.robvanderwoude.com/userinput.php pour une plongée plus profonde dans l'entrée des utilisateurs avec les différentes versions des fichiers batch de win OS.

Une fois que vous avez défini votre variable, vous pouvez l'utiliser de la manière suivante.

@echo off
set /p UserInputPath= What Directory would you like?
cd C:\%UserInputPath%

notez la syntaxe %variable name% (nom de variable)

35voto

Daniel Points 301

Je ne sais pas si c'est le cas pour toutes les versions de Windows, mais sur la machine XP que j'ai, je dois utiliser ce qui suit :

set /p Var1="Prompt String"

Sans la chaîne d'invite dans citations J'obtiens des résultats différents selon le texte.

15voto

fedeb Points 1
@echo off
set /p input="Write something, it will be used in the command "echo""
echo %input%
pause

si je comprends ce que vous voulez, cela fonctionne bien. vous pouvez utiliser %input% dans d'autres commandes également.

@echo off
echo Write something, it will be used in the command "echo"
set /p input=""
cls
echo %input%
pause>nul

thi est plus poli.

8voto

Anisha Gupta Points 21

@echo off :start set /p var1="Entrez le premier chiffre : " pause

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X