503 Stimmen

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.

Ich möchte zum Beispiel 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 ist der Inhalt meiner Beispiel-Bat-Datei:

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

und hier ist, was in jstack.txt angezeigt wird:

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

3 Stimmen

"

1 Stimmen

Hat eine dieser Antworten nicht funktioniert? Wenn nicht, haben Sie eine Lösung gefunden? Wenn ja, wäre es hilfreich, wenn Sie sie hier als Selbstauskunft posten würden.

1 Stimmen

Wenn Sie feste Optionen für die Eingabe wünschen, ist es besser, wenn Sie choice als set /p

597voto

Instantsoup Punkte 14405

Versuchen Sie dies:

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

Sie können dann %id% als Parameter für eine andere Stapeldatei wie jstack %id% .

Zum Beispiel:

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

121voto

jayfessenden Punkte 1305

Die Syntax lautet wie folgt: set /p variable=[string]

Überprüfen Sie http://commandwindows.com/batch.htm ou http://www.robvanderwoude.com/userinput.php für einen tieferen Einblick in die Benutzereingabe mit den verschiedenen Versionen von Windows OS Batch-Dateien.

Sobald Sie Ihre Variable festgelegt haben, können Sie sie wie folgt verwenden.

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

beachten Sie die %VariableName% Syntax

44voto

hannad rehman Punkte 3663
set /p choice= "Please Select one of the above options :" 
echo '%choice%'

Der Raum nach = ist sehr wichtig.

35voto

Daniel Punkte 636

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 den Prompt-String in Zitate erhalte ich je nach Text unterschiedliche Ergebnisse.

15voto

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

Wenn ich verstehe, was Sie wollen, funktioniert das gut. Sie können %input% auch in anderen Befehlen verwenden.

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X