Wie mach ich in Batch Dateien eine Input Abgrage?

2 Antworten

Als Beispiel:

$name = Read-Host 'What is your name?'
echo $name

Hatte ich vor einer Weile auch gesucht... Das echo natürlich jeweils ersetzen...

DaveOt 
Fragesteller
 26.05.2022, 22:31

Ich habe das jetzt so:

title Shutdown
color a (sieht einfach toll aus ^^)
cls
$zeit = Read-Host 'Wie viele Minuten?'
$zeit = $zeit*60
shutdown -s -t $zeit

Leider funktioniert das gar nicht. Ich werde nicht mal abgefragt, sondern es schließt sich direkt wieder.

0
Trilobit  26.05.2022, 22:40

cmd ist nicht bash ;-)

0
Justman  26.05.2022, 22:46
@Trilobit

Wie? Man geht in die CMD um Bash auszuführen? Oder? Ach nee... Mein Beispiel basiert auf Windows Powershell, was jedoch letztendlich dasselbe Prinzip aufweist... Denke ich...

0
Trilobit  26.05.2022, 22:47
@Justman

Ach so, dann Powershell. Für mich sah das wie bash aus.

cmd kennt Dollarvariablen nicht.

0

"set" mit Option "/p" zeigt ein Prompt an und setzt eine Variable auf den eingegebenen Wert.

set /a berechnet etwas (a=Arithmetik).

Variablennamen müssen in Batchdateien von Prozentzeichen eingeschlossen sein, wenn ihr Wert verwendet werden soll. Das gilt allerdings nicht in "set /a"-Anweisungen.

C:\>set /p x=Nach wie vielen Minuten soll heruntergefahren werden?
Nach wie vielen Minuten soll heruntergefahren werden? 60

C:\>echo %x%
60

C:\>set /a y=60*x
3600
C:\>echo %y%
3600
DaveOt 
Fragesteller
 26.05.2022, 23:06

Okay. Soweit funktioniert zwar alles, es wird richtig ausgerechnet und eingesetzt im Shutdown Befehl. Aber der Befehl selbst wird nicht ausgeführt und es ist dabei zu einer Schleife geworden.
Ich werde immer wieder neu gefragt, aber das Programm führt den Shutdown Befehl nicht aus.

Code:

set /p x=Nach wie vielen Minuten soll heruntergefahren werden? 
set /a x = x * 60
shutdown -s -t %x%

0
Trilobit  26.05.2022, 23:42
@DaveOt

Das klingt für mich so, als hättest du deine Batchdatei "shutdown.bat" oder "shutdown.cmd" genannt. Windows sucht zuerst im aktuellen Verzeichnis nach einer passend benannten Datei, und weil es dort deine Batchdatei findet, führt es halt die aus und sucht gar nicht weiter nach anderen Dateien.

shutdown.exe liegt im system32-Verzeichnis unterhalb des Windows-Installationsverzeichnisses. Du kannst den Pfad dorthin direkt angeben, oder den Aufruf auf shutdown.exe ändern. Oder du benennst die Batchdatei um.

1