Показать полную графическую версию : [решено] Команда choice в бат файлах
Я пишу в бат файле
choice /c:ync
pause
Пишет ошибка: choice не является внутренней или внешней командой.
Почему ошибка, делаю с примера? Как исправить?
потому как команда choice является внешней командой, т.е. внешним файлом, который нужно положить в ту же папку, откуда предполагается ее вызвать или же в любую папку, присутствующую в списке переменной path (взять можно здесь (http://ftp.chg.ru/pub/pc/freedos/dos/choice) в варианте для FreeDOS, хотя вполне вероятно будет работать и в MS-DOS).
1) Собсно, что ты хочешь реализовать с помощью данной команды?
2) Есть альтернативные команды, тем более внешние.
Домашка написать бат файл. Я хочу создать менюшку чтоб можно было копировать, удалять……Какие можете посоветовать альтернативные команды?
Doom77, посмотрите тут http://oszone.net/2985#batch
SET /P variable=[promptString]
Пример:
@echo off
SET /P promt=Удалить все к едрени фени?[Y\N]
If %promt%==Y goto del_
If %promt%==y goto del_
goto what
:del_
del /q *.*
echo Все удалено
exit
:what
SET /P promt=Удалить что-то конкретное (введите имя файла и путь либо маску файлов) ?
set /p ypromt=Вы уверены, что хотите удалить файлы "%promt%" ?! [Y\N]
If %ypromt%==Y goto del1_
If %ypromt%==y goto del1_
goto cancel
:del1_
del /q %promt%
echo Файл(ы) %promt% удален(ы)
exit
:cancel
echo Отмена удалений
pause
Пример супер!!!
А зачем писать по две одинаковые строчки? Что только из-за регистра букв?
If %promt%==Y goto del_
If %promt%==y goto del_
Что означает promt?
Оцените мою первую программу :yahoo: Только сильно не смейтесь.
Doom77, цвет консоли надо бы возвращать привычный пользователю, нужно озаглавить в чём суть проги в части Атрибуты, например "Установить атрибуты файлам в текущей директории", добавить в функцию установить дату (если знаешь как, аналог Unix утилиты touch). А так в принципе ничё.
А зачем писать по две одинаковые строчки? »
->
из-за регистра букв »
>
Что означает promt? »
закос под хороший стиль программирования - интелектуёво понятное название переменной. На самом деле данный кусок может выглядеть как
<..skipped..>
SET /P ghkgkbvytigytihg=Удалить все к едрени фени?[Y\N]
If %ghkgkbvytigytihg%==Y goto del_
If %ghkgkbvytigytihg%==y goto del_
goto <..skipped..>
у нас в свое время программеры в универе так развлекались... кучи переменных типа _1-P__u-RRtu__, _1-P__u-RRtu_1, _1-P__u-RRtu1_, _1-P__u-PRtu__.. преподы с ума сходили :)
Смешной вопрос, но решения не могу найти довольно долго - раньше, в COMMAND.COM можно было отладить batch-файлы, трассируя строки. В CMD.EXE я соответсвующего ключа не нашел. Чем можно отладить батник? (Имеется ввиду софт Винды по-умолчанию)
NiOl, так в комплекте ХР присутствует Command.com им и отладить с необходимым ключём.
NiOl, так в комплекте ХР присутствует Command.com им и отладить с необходимым ключём. »
Две новости, как обычно хорошая и очень хорошая: :search:
1: В винде действительно валяется COMMAND.COM и это действительно "com-файл"
2: Он не понимает ключ "Y"
т.е. строка command.com /y /c trace_me.bat фунциклирует также, как command.com /c trace_me.bat
Картина Репина "Приплыли". Неприятно что ни в хелпе винды, ни на мелкософте найти тему не получилось.
NiOl, а файл Виндовс независим? Если да, то можно на виртуальной машине поставить Виндовс который понимает необходимый ключ.
Если к тому же файл и вне Виндовса может запускатся (нету команд Win32) тогда загрузочная дискета/флешка/диск и тестить под ним.
Эх, понадеялся на MSE от офиса и на DOSbox, как простейшие альтернативы... глухо, как в танке - MSE-7 запустил CMD.EXE и ни брикпоинты ни степы не работают, а под ДОСбоксом COMMAND.COM от WinME ругается на версию операционки, а просто выставить на COMMAND.COM режим запуска в совместимом режиме тоже не помогает. Дык. Придется ставить какую-нить виртуалку... но это убогое решение. Должно же быть что-то по-элегантнее!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.