Wie kann ich in Windows cmd nach Benutzereingaben fragen und das Ergebnis in einem anderen Befehl verwenden?

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
Kommentare (5)

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%".

Kommentare (7)

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.

Kommentare (3)