2009-02-19 3 views
6

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

8

Verwenden Sie den Befehl SET mit der Option/P.

+2

Wie wäre es mit einem Timeout und einem Standard? – Baczek

6
SET /P RESULT=Y or N? 
ECHO %RESULT% 
6

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:

http://support.microsoft.com/kb/117600

+0

Leider funktioniert "choice.com" nicht für 64-Bit-Systeme. – Paulius

+2

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

+0

Sie sind korrekt @aphoria, meins hat choice.exe und ich habe es auch nicht dort hingelegt :) – MikeRoger

1

Zum Beispiel könnten Sie verwenden:

SET /P ANSWER=y OR n? 
If "%answer%"=="y" goto yes 
If "%answer%"=="n" goto no 

Viel Spaß!

2

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.

-1

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

+0

Ich habe es in C: \ Windows, um von überall erreichbar zu sein. – BlueWings

+0

Willkommen bei SO. Bitte geben Sie die Lösung direkt in Ihrer Antwort an. Lesen Sie auch: https://stackoverflow.com/help/answering –