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

3voto

SRE Punkte 39

Dollarzeichen um die Variable herum funktionieren auf meinem Vista-Rechner nicht, aber Prozentzeichen schon. Beachten Sie auch, dass zwischen der Eingabeaufforderung und der Benutzereingabe ein nachgestelltes Leerzeichen in der "set"-Zeile angezeigt wird.

2voto

John Punkte 21

Ich habe gerade die

set /p NetworkLocation= Enter name for network?

echo %NetworkLocation% >> netlist.txt

Sequenz zu meinem netsh-Batch-Job. Es zeigt mir jetzt den Ort an, den ich als Punkt für diese Probe anspreche. Ich habe ständig >> die Ausgabedatei, so dass ich jetzt weiß, "home", "work", "Starbucks", etc. Wenn ich nach freier Luft suche, kann ich die am wenigsten genutzten Kanäle ausfindig machen und herausfinden, ob es 5 oder nur alle 2,4-MHz-WLANs in der Nähe gibt.

2voto

Antoni Punkte 322

Nur um einen Standardwert für die Variable zu erhalten. Drücken Sie die Eingabetaste, um den Standardwert der letzten Ausführung Ihrer .bat zu verwenden:

@echo off
set /p Var1=<Var1.txt
set /p Var1="Enter new value ("%Var1%") "
echo %Var1%> Var1.txt

rem YourApp %Var1%

Beim ersten Durchlauf ignorieren Sie einfach die Meldung über das Fehlen einer Datei mit dem Anfangswert der Variablen (oder erstellen Sie die Datei Var1.txt manuell).

1voto

Andy McRae Punkte 381

Eine andere Möglichkeit, die interessant sein könnte. Sie können ein Powershell-Skript aufrufen, von wo aus Sie so ziemlich alles tun können, und die Daten bach cmd senden oder andere Dinge mit etwas wie diesem tun.

set var=myvar; 
call "c:\input2.cmd" %var%. 

Es ist etwas flexibler (Sie können die Daten auf die gleiche Weise mit Powershell senden).

Schreiben Sie also in Ihre cmd folgende Zeile, da das ps-Skript in C: :

PowerShell.exe -ExecutionPolicy unrestricted -Command "& {. C:\Input.ps1}"

Und in Ihr input.ps1-Skript schreiben Sie Folgendes:

$var = Read-Host -Prompt "Your input"
Write-Host "Your var:",$var
#Do stuff with your variable

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