Ich habe eine Windows-Bat-Datei, die Benutzereingaben annehmen und dann die Ergebnisse dieser Eingaben als Teil des Aufrufs weiterer Befehle verwenden soll.
Zum Beispiel möchte ich eine Prozess-ID vom Benutzer akzeptieren und dann jstack mit dieser ID ausführen und die Ergebnisse des jstack-Aufrufs in eine Datei schreiben. Wenn ich dies jedoch versuche, funktioniert es nicht.
Hier's meine Beispiel bat Datei Inhalt:
@echo off
set /p id=Enter ID:
echo %id%
jstack > jstack.txt
und hier's, was in jstack.txt auftaucht:
ID eingeben: Batch-Job beenden (J/N)?
Versuchen Sie dies:
@echo off
set /p id="Enter ID: "
Sie können dann %id%
als Parameter für eine andere Batch-Datei wie jstack %id%
verwenden.
Beispiel:
set /P id=Enter id:
jstack %id% > jstack.txt
Die Syntax lautet wie folgt: set /p variable=[string]
Einen tieferen Einblick in die Benutzereingabe mit den verschiedenen Versionen von Windows OS Batchdateien finden Sie unter http://commandwindows.com/batch.htm oder http://www.robvanderwoude.com/userinput.php.
Sobald Sie Ihre Variable gesetzt haben, können Sie sie auf folgende Weise verwenden.
@echo off
set /p UserInputPath=What Directory would you like?
cd C:\%UserInputPath%
Beachten Sie die Syntax "%Variablenname%".
Ich bin mir nicht sicher, ob dies bei allen Windows-Versionen der Fall ist, aber auf dem XP-Rechner, den ich habe, muss ich Folgendes verwenden:
set /p Var1="Prompt String"
Ohne die Eingabeaufforderung in Anführungszeichen erhalte ich je nach Text unterschiedliche Ergebnisse.