Bat файл выбор вариантов

Обновлено: 04.07.2024

В Bash есть несколько команд, который могут позволить составить сценарий, в котором можно описать несколько действий и предоставить пользователю ввести номер нужной позици и тогда выполняются определенные команды, если пользователь ничего не выбрал, то подставляется номер по умолчанию и выполняются команды соответствующие данному номеру.

Как это можно осуществить в командной строке Windows .

Приведите пожалуйста примеры или статьи с подробным разбором особенности таких команд в BATCH ( без использования каких-либо других языков или установки утилит)

Спасибо.

Phoenix

Аксакал
В Bash есть несколько команд, который могут позволить составить сценарий, в котором можно описать несколько действий и предоставить пользователю ввести номер нужной позици и тогда выполняются определенные команды, если пользователь ничего не выбрал, то подставляется номер по умолчанию и выполняются команды соответствующие данному номеру. Вот вы и приведите пример, а то как то догадываться неправильно.

alex-s

Пользователь
Вот вы и приведите пример, а то как то догадываться неправильно. Спойлер: getops -Прием опций/аргументов, передаваемых сценарию, с помощью getopts Спойлер: список файлов текущей директории начинающиеся на s s*

Dragokas

Very kind Developer
Намёка на статью у меня нет, но достаточный минимум описан в справке choice /?
Доступна на ОС Vista и выше.

CHOICE [/C список] [/N] [/CS] [/T тайм-аут /D элемент] [/M текст]

Описание.
Эта программа позволяет выбирать элемент из списка элементов
и возвращает индекс выбранного элемента.

Параметры:
/C список Создаваемый список выбираемых элементов.
Список по умолчанию "YN".

/CS Включение учета регистра при выборе элементов.
По умолчание в программе регистр символов не учитывается.

/T тайм-аут Число секунд перед выбором элемента по умолчанию.
Допустимыми являются значения от 0 до 9999.
Если указан 0, отсутствует пауза перед выбором
элемента по умолчанию.

/D элемент Элемент, выбираемый по умолчанию через nnnn секунд.
Символ должен присутствовать в наборе элементов
в параметре /C; значение nnnn задается в параметре /T.

/? Вывод справки по использованию.

Примечание
Переменная среды ERRORLEVEL получает значение индекса
клавиши, соответствующей выбранному элементу. Первый элемент
в списке возвращает значение 1, второй - 2 и т.д.
Если пользователь нажимает клавишу, не соответствующую допустимому
выбору, подается звуковой сигнал. Если обнаруживается ошибка,
возвращается значение ERRORLEVEL 255. Если нажимаются клавиши
CTRL+BREAK или CTRL+C, программа возвращает значение ERRORLEVEL 0.
При использовании параметров ERRORLEVEL в пакетной программе их
следует перечислять по убыванию.

Примеры:
CHOICE /?
CHOICE /C YNC /M "Y - Да, N - Нет, C - Отмена."
CHOICE /T 10 /C ync /CS /D y
CHOICE /C ab /M "a" для выбора параметра 1 и "b" для выбора параметра 2.
CHOICE /C ab /N /M "a" для выбора параметра 1 и "b" для выбора параметра 2.

По истечению 5 секунд будет автоматически выбран вариант Y.
Порядковый номер выбранной буквы будет сохранён в виде кода возврата ошибки (errorlevel).

Учтите, что регистр символов (если не указан ключ /CS) игнорируется только в английском алфавите.

Конфигурация компьютера
Процессор: AMD Ryzen 5 3500X 6-Core Processor, 3593 МГц
Материнская плата: Gigabyte B450M DS3H-CF
Память: 2 x Kingston HyperX FURY Black DDR4, 8,00 ГБ
HDD: TOSHIBA DT01ACA200 ATA Device 1,82 ТБ, Samsung SSD 860 PRO 256GB
Видеокарта: NVIDIA GeForce GTX 1060 3GB
Звук: Realtek High Definition Audio
ОС: Windows 10 Pro x64

Мне нужно сделать меню в bat-файле:
Какую операцию Вы хотите выполнить?

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

Конфигурация компьютера
Процессор: AMD Ryzen 5 3500X 6-Core Processor, 3593 МГц
Материнская плата: Gigabyte B450M DS3H-CF
Память: 2 x Kingston HyperX FURY Black DDR4, 8,00 ГБ
HDD: TOSHIBA DT01ACA200 ATA Device 1,82 ТБ, Samsung SSD 860 PRO 256GB
Видеокарта: NVIDIA GeForce GTX 1060 3GB
Звук: Realtek High Definition Audio
ОС: Windows 10 Pro x64

Просто я в написании скриптов очень плохо разбираюсь.

Поскольку у Вас много пунктов, проще будет оформить их вывод посредством «echo». Вот примерная болванка (не проверялось):

Последний раз редактировалось Iska, 12-03-2014 в 13:22 . Причина: Убрано «/d 7» как ошибочное в данном случае

Конфигурация компьютера
Процессор: AMD Ryzen 5 3500X 6-Core Processor, 3593 МГц
Материнская плата: Gigabyte B450M DS3H-CF
Память: 2 x Kingston HyperX FURY Black DDR4, 8,00 ГБ
HDD: TOSHIBA DT01ACA200 ATA Device 1,82 ТБ, Samsung SSD 860 PRO 256GB
Видеокарта: NVIDIA GeForce GTX 1060 3GB
Звук: Realtek High Definition Audio
ОС: Windows 10 Pro x64
Конфигурация компьютера
Процессор: AMD Ryzen 5 3500X 6-Core Processor, 3593 МГц
Материнская плата: Gigabyte B450M DS3H-CF
Память: 2 x Kingston HyperX FURY Black DDR4, 8,00 ГБ
HDD: TOSHIBA DT01ACA200 ATA Device 1,82 ТБ, Samsung SSD 860 PRO 256GB
Видеокарта: NVIDIA GeForce GTX 1060 3GB
Звук: Realtek High Definition Audio
ОС: Windows 10 Pro x64
Iska, возможно ли сделать так, что бы меню не закрывалось и после завершения задачи - можно было выбрать другой пункт?
Конфигурация компьютера
Процессор: Pentium(R) Dual-Core CPU E5200 @ 2.50Ghz
Материнская плата: ASRock G31M-S
Память: 1528 Mb DDR2, Samsung
HDD: IDE, ST325062A, 250GB
Видеокарта: Intel(R) G33/G31 Express Chipset
Звук: Realtek
Блок питания: 350W
CD/DVD: PIONER DVD-RW DVR-112D
ОС: Win XP SP3 Simple Edition

-------
Сложность программы растет до тех пор, пока не превысит способности программиста.

Приветствую всех.
Подскажите пожалуйста момент. После "Введите цифру желаемого пункта" мне допустим надо ещё накидать пару строчек текста, но через echo текст в консоли не отображается. Возможно ли вообще отобразить текст в консоле после "Введите цифру желаемого пункта" следующей строкой?

1. Установить драйвер защиты (обязательно) - 1
2. Установить защиту реестра - 2
3. Установить защиту (файлов, папок, драйверов, служб) - 3
4. Вывести подробный отчет по защите (папка logs) - 4
5. Выход - 5

Доброго дня!

* Для справки.

BAT-файл — текстовый файл со списком команд. При его запуске (открытии) — интерпретатор ОС выполняет их одну за одной. Это очень удобно для выполнения повторяющихся задач (например, если вам нужно запускать каждый раз игру с высоким приоритетом, или чистить определенную папку, и др.).

*

ускорение ПК

Создание BAT файлов: на примерах

Основы! С чего начать (Вариант 1: проверка пинга)

Для начала покажу, как создать простейший BAT-файл для проверки пинга (для общего понимания процесса. ).

Создаем текстовый документ

Создаем текстовый документ

Название файла у этого текстового документа может быть любым (но лучше использовать англ. символы).

Далее следует открыть этот файл и вписать в него нужные команды. В своем примере я впишу только одну (если вы делаете это впервые — рекомендую повторить ее вместе со мной):

Копируем в него нашу команду и сохраняем файл.

Копируем в него нашу команду и сохраняем файл.

reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v HideFileExt /t REG_DWORD /d 00000000 /f

taskkill /F /IM explorer.exe & start explorer

Нам нужно переименовать файл так, чтобы вместо ".TXT" — было новое расширение ".BAT" !

Меняем расширение TXT на BAT

Меняем расширение TXT на BAT

Идет проверка пинга!

Идет проверка пинга!

Чтобы отредактировать BAT-файл (и каждый раз не переименовывать его туда-сюда) — рекомендую вам установить блокнот Notepad++ (уже ранее добавлял его в подборку).

После установки Notepad++ — достаточно кликнуть ПКМ по BAT-файлу — и в появившемся меню выбрать опцию редактирования.

Редактировать BAT

Вариант 2: запуск игры с высоким приоритетом + откл. авто-поиска Wi-Fi сетей

Этот скрипт рекомендуется попробовать пользователям ноутбуков, кто играет в сетевые игры.

*

Что за строки нужно добавить в BAT (выделены коричневым):

cmd.exe /c start /high /D "C:\Games\Counter-Strike 1.6\" hl.exe -game cstrike -appid 10 -nojoy -noipx -noforcemparms -noforcemaccel
netsh wlan set autoconfig enabled=no interface="Wi-Fi"
pause
netsh wlan set autoconfig enabled=yes interface="Wi-Fi"
pause

  1. запускает игру CS с высоким приоритетом (это позволяет снизить кол-во притормаживаний в играх). Разумеется, вместо строки "C:\Games\Counter-Strike 1.6\" hl.exe — вы можете указать свою игру и ее расположение;
  2. отключает авто-поиск Wi-Fi сетей (это снижаем пинг и увел. скорость сети // правда не дает подключаться к другим Wi-Fi сетям). Кстати, вместо "Wi-Fi" — нужно указать название своего адаптера (посмотрите так: нажмите Win+R, и используйте команду ncpa.cpl ) ;

Название адаптера

Вариант 3: создание резервной копий файлов и точки восстановления в Windows

Приведу наиболее простую и довольно надежную команду для создания резервных копий файлов и папок:

Она копирует один каталог в другой (просто, без вопросов и расспросов). Если вам нужно скопировать 2 или 3 (или более) каталогов — просто создайте несколько подобных строк.

  1. C:\Games — тот каталог, который будем копировать (все подкаталоги и файлы из них тоже будут скопированы);
  2. D:\backup — тот каталог, куда будет всё скопировано;
  3. /f — выводит имена файлов (чтобы вы видели, что происходит);
  4. /i — создает новый каталог, если на диске "D:" нет каталога "backup" (см. строку выше);
  5. /y — перезаписывает старые файлы новыми;
  6. /s — копирует каталоги и подкаталоги, если в них есть какие-то файлы.

Для создания точки восстановления можно использовать следующий код:

wmic.exe /Namespace:\\root\default Path SystemRestore Call CreateRestorePoint "MyRestorePoint", 100, 7
pause

Точки восстановления создаются!

Точки восстановления создаются!

Вариант 4: очистка временных папок

del /q /f /s %WINDIR%\Temp\*.*
del /q /f /s %SYSTEMDRIVE%\Temp\*.*
del /q /f /s %Tmp%\*.*
del /q /f /s %Temp%\*.*

  • BAT-файл с этими строками чистит временные папки в Windows (как правило, в них скапливается один "мусор", которые занимает лишь место на диске);
  • %WINDIR%\Temp\ — это папка "C:\Windows\Temp";
  • %SYSTEMDRIVE% — это системный диск "C:\";
  • *.* — маска для удаления всех файлов;
  • /q /f /s — удаление всех каталогов и подкаталогов (без вопросов).
  • del /q /f /s %WINDIR%\Prefetch\*.* — эта строка очистит папку Prefetch (в ней сохраняется кэш от различного софта. При удалении той или иной программы — кэш в папке остается, и со временем — ее размер может разрастись);
  • del /q /f /s %SYSTEMDRIVE%\*.log — удаление всех Log-файлов с системного диска (это файлы, в которых содержится история запуска программы, например. Во многих случаях они бесполезны). Большинство программ, кстати, ведут логи, со временем они разрастаются и могут отнять сотни МБ на диске;
  • При помощи предыдущей команды можно удалить и другие файлы с системного диска (например, с расширением .tmp или .bak // достаточно поменять лишь концовку команды) — однако, будьте аккуратны, легко можно что-нибудь запороть!

Этот мини-скриптик может быть весьма полезный (например, если у вас "подвисает" проводник при обращении к флешки // или не запускается управление дисками).

*

@echo off
wmic logicaldisk get name, VolumeName, Size, FileSystem, NumberOfBlocks, description
set /p adisk="Введите букву диска/флешки для форматирования: "
set /p named="Введите имя для диска/флешки (любое, например, my_disk): "
set /p number="Нажмите l — для формат. в NTFS, 2 — в FAT32, 3 — для в ExFAT. Ваше число: "

if "%number%" == "1" (
format %adisk%: /FS:NTFS /Q /V:%named%
pause
exit /b
)

if "%number%" == "2" (
format %adisk%: /FS:FAT32 /Q /V:%named%
pause
exit /b
)

if "%number%" == "3" (
format %adisk%: /FS:ExFAT /Q /V:%named%
pause
exit /b
)

Он довольно простой, но будьте с ним аккуратны! Если укажите не ту букву накопителя — можно легко отформатировать не тот диск.

Как он работает (запускать под именем администратора):

Пример работы BAT-файла

Пример работы BAT-файла для форматирования флешки

Как запускать BAT-файл от имени администратора (и по расписанию)

Нажать ПКМ по BAT-файлу

Нажать ПКМ по BAT-файлу

Создание ярлыка к BAT-файлу

Создание ярлыка к BAT-файлу

Свойства ярлыка — запускать с админ. правами

Свойства ярлыка — запускать с админ. правами

В планировщике заданий Windows (чтобы его открыть нажмите Win+R , и используйте команду control schedtasks ) можно настроить запуск BAT-файла в нужное время и с нужными правами (т.е. автоматически). Это может быть весьма удобно, и серьезно упростить работу со множеством задач (очистка Windows от мусора, создание бэкапов и пр.) — точно никогда не забудете!

Триггеры - когда выполнять задачу, расписание

Триггеры - когда выполнять задачу, расписание

Чаще всего это бывает с теми BAT, в которых есть русские символы и выставлена "неправильная" кодировка (например, они часто встречаются в пути к папке: "C:\Games\Лучшие игры" ). Кстати, в этом случае BAT-файл работать не будет: после попытки выполнения операции с "крякозабрами" — появится ошибка и окно CMD будет закрыто.

Команда Choice позволяет сделать командные файлы интерактивными. Чтобы понять, как она работает, рассмотрим базовый вариант команды:

Теперь, когда вы понимаете базовый принцип, давайте рассмотрим более полноценный пример.

Выше приведен пример базовой команды Choice. С использованием дополнительных параметров можно создавать более сложные команды. Ниже приводится официальное описание параметров команды Choice от Microsoft:

Использование команды Choice в Windows 7

Пример реального использования

Теперь, когда вы представляете, как работает команда Choice, давайте рассмотрим пример реальной ситуации, в которой эта команда может облегчить использование командного файла.

Диагностика и разрешение проблем, связанных с TCP/IP, в сети Windows может оказаться нелегкой задачей. Сделать ее проще позволяет команда IP Configuration (IPConfig), которая предоставляет подробные сведения о сетевых настройках Windows. Эти данные можно использовать для проверки сетевых соединений и настроек, что в сочетании с другими инструментами помогает диагностировать и устранять неполадки, связанные с TCP/IP, в сети Windows.

К сожалению, команда IPConfig имеет массу параметров, причем некоторые из них очень длинные, так что их нелегко запомнить и правильно ввести. Чтобы упростить задачу, я создал командный файл, показанный на рис. A (если хотите, можете его скачать ). Странные символы я скопировал из таблицы символов: они создают симпатичную рамку, как показано на рис. B.

Использование команды Choice в Windows 7


Рисунок A. Файл «IPC.bat», созданный с использованием команды Choice, облегчает применение длинных параметров команды IPConfig.

Чтобы запустить файл, откройте окно командной строки в нужной папке и введите IPC. Появится аккуратное меню, показанное на рис. B. С помощью команды Choice можно легко выбрать и запустить нужный вариант IPConfig с распространенными параметрами. Достаточно просто ввести определенную цифру, и команда запустится автоматически.

Использование команды Choice в Windows 7


Рисунок B. Изучив меню, просто введите нужную цифру, чтобы запустить соответствующую команду IPConfig.

А что думаете вы?

Приходится ли вам создавать и использовать командные файлы на регулярной основе? Будете ли вы пользоваться командой Choice? Скачаете ли вы файл «IPC.bat»? Поделитесь своим мнением в комментариях!

Автор: Greg Shultz
Перевод SVET


Оцените статью: Голосов

Читайте также: