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 de le faire, 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 :
Entrer l'ID : Terminer le travail de lot (O/N) ?
Essayez ceci:
@echo off
set /p id="Enter ID: "
Vous pouvez ensuite utiliser %id%
comme paramètre d'un autre fichier batch comme jstack %id%
.
Par exemple:
set /P id=Enter id:
jstack %id% > jstack.txt
La syntaxe est la suivante : set /p variable=[string]
Consultez http://commandwindows.com/batch.htm ou http://www.robvanderwoude.com/userinput.php pour un examen plus approfondi de la saisie utilisateur avec les différentes versions des fichiers batch du système d'exploitation Windows.
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%
note la syntaxe %VariableName%
.
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 entre guillemets**, j'obtiens différents résultats en fonction du texte.