Gibt es eine Möglichkeit, Benutzer zur Eingabe (dh: Ja/Nein) von einem Windows-Batch-Skript, das auf XP- und Windows 2003-Servern funktioniert, aufzufordern? Es scheint, dass einige Befehle (zB: Auswahl) nur auf einem Betriebssystem und nicht auf anderen Betriebssystemen funktionieren.Windows Stapelauswahlbefehl für Windows XP & 2003
Antwort
Verwenden Sie den Befehl SET mit der Option/P.
SET /P RESULT=Y or N?
ECHO %RESULT%
Beachten Sie, dass die SET /P
Befehl nicht alle die gleichen Funktionen wie der CHOICE
Befehl unterstützt. Nämlich:
- Es schränkt die Benutzer die Eingabe eines gültigen Wert
- Der Benutzer muss die Eingabetaste drücken
- Sie müssen prüfen Gehäuse Unterschiede (zB „A“ vs „a“)
- Es gibt keine Möglichkeit zu einer bestimmten Wahl nach einem gewissen Zeit
aus diesen Gründen auf dem Standard, ich immer noch lieber eher den CHOICE
Befehl verwenden, als der SET /P
Befehl. Um dies zu tun, müssen Sie nur CHOICE.COM zusammen mit Ihrer Batch-Datei enthalten. Sie können CHOICE.COM von Microsoft über die MS-DOS 6.22 Supplemental Disk herunterladen. Hier ist der Link:
Leider funktioniert "choice.com" nicht für 64-Bit-Systeme. – Paulius
Ich glaube, 64-Bit-Windows 7 enthält 'CHOICE.EXE'. Zumindest haben meine Maschinen es und ich bin ziemlich sicher, dass ich es selbst nicht dort hingelegt habe. – aphoria
Sie sind korrekt @aphoria, meins hat choice.exe und ich habe es auch nicht dort hingelegt :) – MikeRoger
Zum Beispiel könnten Sie verwenden:
SET /P ANSWER=y OR n?
If "%answer%"=="y" goto yes
If "%answer%"=="n" goto no
Viel Spaß!
Dies wird im Grunde nachahmen, welche Wahl Sie tun müssen, müssen Sie es als Unterprogramm in Ihrer Batch-Datei setzen. Ich bevorzuge auch die Wahl, aber ich brauche etwas Portables, das auf Windows XP läuft.
Sie können dies ändern, um andere "Auswahlmöglichkeiten" zu akzeptieren. Dies funktioniert jedoch ohne Berücksichtigung der Groß- und Kleinschreibung und wiederholt die Eingabeaufforderung, bis der Benutzer explizit Y, y, N oder n eingibt.
:yesorno
set /p choice=%2
if /i NOT %choice% == n (
if /i NOT %choice% == y goto yesorno
)
set "%~1=%choice%"
goto :eof
Sie würden dann diese Unterroutine über nennen:
call :yesorno answer "Do you want to continue? [Y/n]: "
Es wurde bisher sehr gut für mich arbeiten.
Windows Millenium CHOICE.COM funktioniert gut für mich unter XP SP3. Aber meine Sprache ist ungarisch, aber Sie können wahrscheinlich ihre ursprüngliche englische Variante finden, zum Beispiel die Suche nach "Windows Millenium EBD".
http://s000.tinyupload.com/index.php?file_id=57468192666746678653
Ich habe es in C: \ Windows, um von überall erreichbar zu sein. – BlueWings
Willkommen bei SO. Bitte geben Sie die Lösung direkt in Ihrer Antwort an. Lesen Sie auch: https://stackoverflow.com/help/answering –
Wie wäre es mit einem Timeout und einem Standard? – Baczek