Войти

Показать полную графическую версию : [решено] альтернатива choice.com


SANIOK_AV
13-01-2009, 15:17
Товарищи!!!
у меня такая ситуация в батнике
использую choice.com
запускаю батник под ХР
вот примерный текст батника:

@echo off
d:
cd cfg
call timer
echo .
cls
echo RESTART? Y/N?
choice /c:YN
if errorlevel 2 goto End
shutdown -r -t 0
:End


choice.com находится в текущем каталоге d:\cfg\

на моём компе всё отрабатывает нормально...
но на других совсем не так как хотелось бы...
а именно: сообщение "RESTART? Y/N?" выводится на несколько секунд, после чего исчезает и на экране мигает просто курсор без всяких [y/n]?
что ещё заметил запускаю на своём компе choice /?
хелп выводится как положено...
делаю то же самое на другом - мигает голый курсор...

я знал про такую команду как be ask ... но на других компьютерах пишет что be не является внутренней командой и т.д.

подскажите может есть какойто другой вариант для перехода по меткам...
заранее благодарен!!!

Busla
13-01-2009, 16:44
А где вы взяли этот choice.com?! - в 2k и XP команды choice нет в Vista - есть - её можно взять из Resource Kit, но там choice.exe. И синтаксис у неё немножко не такой: после ключа /c должен идти пробел, не говоря о том, что вариант YN принимается по умолчанию безо всяких ключей.

Для переносимости можно воспользоваться расширенным синтаксисом командного интерпретатора - использовать set с ключом /p, не так удобно но вполне функционально.

SANIOK_AV
13-01-2009, 16:52
Для переносимости можно воспользоваться расширенным синтаксисом командного интерпретатора - использовать set с ключом /p, не так удобно но вполне функционально. »
а не могли бы примерчик с set /p привести, если не трудно...

Admiral
13-01-2009, 18:41
SANIOK_AV, cmd запрос юзера (http://forum.oszone.net/showthread.php?t=108723)
Busla, в 2003м тоже.

Busla
13-01-2009, 18:48
@echo off
set /p YN="RESTART? Y/N [Enter] "
:Loop
if -%YN% == -y goto Restart
if -%YN% == -Y goto Restart
if -%YN% == -н goto Restart
if -%YN% == -Н goto Restart
if -%YN% == -n goto End
if -%YN% == -N goto End
if -%YN% == -т goto End
if -%YN% == -Т goto End
set /p YN="Не понял - нажмите Y или N и Enter "
goto Loop
:Restart
echo Отложенная перезагрузка
:End

SANIOK_AV
14-01-2009, 11:36
выдрал из w2k3 choice.exe всё отлично заработало!!!
ща поэксперементирую с set /p
Всем огромное спасибо!!!!! :oszone:




© OSzone.net 2001-2012