Команда пакетного выбора Windows для Windows XP и 2003

Есть ли способ запрашивать у пользователей ввод (т.е.: Да/Нет) из пакетного сценария Windows, который работает на серверах XP и Windows 2003? Кажется, что некоторые команды (например, выбор) работают только в одной ОС, а не в других.


person Marcus Leon    schedule 19.02.2009    source источник


Ответы (5)


Используйте команду SET с параметром /P.

person Nick Fortescue    schedule 19.02.2009
comment
как насчет таймаута и дефолта? - person Baczek; 03.01.2012

Обратите внимание, что команда SET /P не поддерживает все те же функции, что и команда CHOICE. А именно:

  • Это не ограничивает пользователя вводом допустимого значения
  • Пользователь должен нажать Enter
  • Вы должны проверить различия в регистре (например, «A» против «a»)
  • Невозможно по умолчанию сделать определенный выбор через определенное время

По этим причинам я по-прежнему предпочитаю использовать команду CHOICE, а не команду SET /P. Для этого вам просто нужно включить CHOICE.COM вместе с пакетным файлом. Вы можете загрузить CHOICE.COM от Microsoft с помощью дополнительного диска MS-DOS 6.22. Вот ссылка:

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

person James Messinger    schedule 10.11.2009
comment
Я считаю, что 64-разрядная версия Windows 7 включает CHOICE.EXE. По крайней мере, он есть в моих машинах, и я почти уверен, что не ставил его туда сам. - person aphoria; 07.01.2012
comment
Вы правы, @aphoria, у меня есть selection.exe, и я его туда не помещал :) - person MikeRoger; 14.07.2015
comment
Ссылка на утилиту DOS 6.22 битая. У меня был доступ к CHOICE.COM из Windows 98, но моя система XP не заботилась об этом; CHOICE.EXE из 32-битной Windows 7 также не работает в системе Windows XP. Хотя я не могу сказать, что эта тестовая система типична, мои тесты были достаточно тщательными, так что этот ответ кажется нежизнеспособным в некоторых сценариях. - person kbulgrien; 11.07.2017

Это будет в основном имитировать то, что делает выбор, вам нужно будет поместить его как подпрограмму в ваш пакетный файл. Я также предпочитаю выбор, но мне нужно что-то портативное, которое будет работать на Windows XP.

Затем вы можете изменить это, чтобы принять другие «выборы», однако это будет работать без учета регистра и повторять приглашение, пока пользователь явно не введет Y, y, N или n.

:yesorno
set /p choice=%2
if /i NOT %choice% == n (
    if /i NOT %choice% == y goto yesorno
)
set "%~1=%choice%"
goto :eof

Затем вы должны вызвать эту подпрограмму через:

call :yesorno answer "Do you want to continue? [Y/n]: "

До сих пор это работало очень хорошо для меня.

person Snake    schedule 20.08.2015

Например, вы можете использовать это:

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

Наслаждаться!

person PARASITE    schedule 06.05.2012

Windows Millenium CHOICE.COM отлично работает под XP SP3. Тем не менее, мой язык - венгерский, но вы, вероятно, можете найти его оригинальный английский вариант, например, по запросу "windows millenium ebd".

http://s000.tinyupload.com/index.php?file_id=57468192666746678653

person BlueWings    schedule 14.09.2017
comment
Я поместил его в C:\windows, чтобы он был доступен отовсюду. - person BlueWings; 14.09.2017
comment
Добро пожаловать в СО. Пожалуйста, предоставьте решение прямо в своем ответе. Также прочтите: stackoverflow.com/help/answering - person Maciej Jureczko; 14.09.2017