Учение основ cmd(bat) (для новичков)
Хэллоу пикабушник. Я хочу, чтобы ты понял весь программный язык cmd(bat) на понятном языке. Ну, давай приступим?
С этим мы разобрались, теперь, зачем он нужен? Дело в том, что некоторые вещи можно быстрее выполнить в командной строке, а некоторые настройки в принципе отсутствуют в графическом интерфейсе пользователя. Так же следует иметь в виду, что до сих пор существуют утилиты, не имеющие графического интерфейса, а иногда он оказывается недоступен, например из-за сбоя.
Как открыть командную сроку(cmd.exe)
нажмите сочетание клавиш WIN R, введите cmd и нажмите кнопку Ok;
нажмите кнопку «Пуск» введите в поле поиска «командная строка» и щелкните в результатах поиска «Командная строка» (можно ввести «cmd» и выбрать в результатах «cmd»);
нажмите «Пуск» ⇒ «Все программы» ⇒ «Стандартные» ⇒ «Командная строка»;
открыть в Проводнике папку C:WindowsSystem32 и запустить файл cmd.exe.
И так, давайте создадим на рабочем столе текстовый документ, а далее впишем в него
@Echo
Для вывода сообщения в BAT файлах используется команда echo: Вывод сообщений и переключение режима отображения команд на экране. ECHO [ON. OFF] ECHO [сообщение] Ввод ECHO без параметров позволяет выяснить текущий режим отображения команд.
В данном случае напишем @Echo off
После напишем такую строку A: Что это такое? Это так сказать, строка, позволяющая делать оборот(обратно выполнять функции,команды после этой строки)
Далее после A: напишем, echo HELLO MY FRIEND (тут вышла ошибочка, пишем :A, а не A: )
echo – команда, позволяющая показывать сообщения, в моем случае это “HELLO MY FRIEND“
После давайте напишем команду, которая будет открывать окно, в данном случае это команда “Start”
Команда START – запуск приложения в новом окне
Команда START позволяет запускать приложения в отдельном окне, с возможностью указания некоторых параметров их выполнения.
Формат командной строки:
START [“заголовок”] [/D путь] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED] [/LOW | /NORMAL | /HIGH | REALTIME| /ABOVENORMAL | /BELOWNORMAL] [/WAIT] [/B] [команда/программа] [параметры]
Параметры командной строки:
“заголовок” – заголовок окна. Обязательно в двойных кавычках.
путь – рабочий каталог.
B – запуск приложения без создания нового окна с отключением обработки сочетания клавиш CTRL C. Если приложение не обрабатывает сочетание клавиш CTRL C самостоятельно, единственным способом его прерывания является использование сочетания клавиш CTRL Break.
I – Новой средой станет исходная среда, переданная cmd.exe, а не текущая среда.
MIN – Запуск команды/программы в свернутом окне.
MAX – Запуск команды/программы в развернутом окне.
SEPARATE – Запуск 16-разрядной программы Windows в отдельной области памяти.
SHARED – Запуск 16-разрядной программы Windows в общей области памяти.
LOW – Запуск приложения с приоритетом IDLE (самый низкий приоритет).
NORMAL – Запуск приложения с приоритетом NORMAL.
HIGH – Запуск приложения с приоритетом HIGH.
REALTIME – Запуск приложения с приоритетом REALTIME (самый высокий приоритет).
WAIT – Запуск приложения с ожиданием его завершения.
ABOVENORMAL – Запуск приложения с классом приоритета ABOVENORMAL (выше стандартного)
BELOWNORMAL – Запуск приложения с классом приоритета BELOWNORMAL (ниже стандартного)
команда/программа – Если это внутренняя команда cmd.exe или пакетный файл, обработчик команд (cmd.exe) запускается с ключом /K. Это означает, что окно не будет закрыто после завершения команды. Если это не внутренняя команда cmd.exe и не пакетный файл, значит, это программа, которая будет запущена в графическом или текстовом окне.
Но давайте напишем start http://google.com – при данное команде, будет открываться гугл.
После напишем echo I KILLED YOUR WINDOWS (Мини шуточка пхпх) – команда которая будет выводить текст. И на последок пишем goto A (для работы круга)
Вот как все это должно выглядеть
Тип файла выбираем “Все файлы” и к названии вашего файла(в моем случае пикабу) приписываем .bat
Автодополнение путей файлов
В командной строке Windows можно выполнять подстановку имен файлов и каталогов при нажатии клавиши Tab. Например, для перехода, в каталог с длинным именем Program Files наберите начальную часть имени каталога
CD Pro и нажмите Tab. В строке ввода должна появиться команда :
CD “Program Files”
Как видим, выполняется подстановка недостающей части имени каталога, а в тех случаях, когда в нем имеется символ пробела, добавляются еще и двойные кавычки.
Если имеется несколько совпадающих начальных частей имен файлов или каталогов, при каждом нажатии клавиши Tab будет подставляться следующее по алфавитному порядку имя. Для возврата на предыдущее – используется комбинация Shift Tab
Запуск командной строки.
Для запуска командной строки можно воспользоваться одним из следующих способов:
Пуск – Выполнить (или клавиши Win R) введите cmd и нажмите клавишу Enter;
Пуск – Все программы – Стандартные – Командная строка»;
Пуск – Поиск – Командная строка.
Также, для запуска командной строки можно использовать заранее подготовленный ярлык, ссылающийся на исполняемый файл %SystemRoot%system32cmd.exe ( обычно – C:Windowssystem32cmd.exe).
Использование буфера обмена.
Текст, выделенный в окне приложения, можно скопировать в буфер обмена, а также вставить его из буфера обмена в поле ввода. При стандартных настройках командной строки для выделения текста используется пункт ”Пометить” контекстного меню, вызываемого правой кнопкой мышки. При желании, в свойствах ярлыка, с помощью которого выполняется запуск можно включить режим выделения мышью:
В режиме выделения мышью, контекстное меню не используется, а текст выделяется с использованием левой кнопки мышки. Копирование и вставка выполняется при нажатии правой кнопки мышки.
При включенном режиме ”Разрешить сочетания клавиш с CONTROL”, можно использовать стандартные сочетания клавиш:
– CTRL C (CTRL Insert) – скопировать выделенный текст.
– CTRL V (Shift Insert) – вставить выделенный текст.
Использование истории команд и горячих клавиш.
Для вызова ранее введенных команд используются клавиши со стрелками Стрелка Вверх – на одну команду назад и Стрелка Вниз – на одну команду вперед. Кроме того, можно использовать функциональные клавиши:
F1 – посимвольный вызов последней введенной команды. Каждое нажатие F1 приводит к последовательной подстановке в поле ввода одного символа из предыдущей команды.
Как запросить и получить пользовательский ввод в файле. bat и использовать его для запуска определенной программы? | блог о программировании
Если входные данные, скажем, N
, ваши строки IF оцениваются следующим образом:
If N=="y" goto yes
If N=="n" goto no
…
То есть вы сравниваете N
с "y"
, затем "n"
и т. д. в том числе "N"
. Вы никогда не получите совпадение, если пользователь каким-то образом не решит ввести "N"
или "y"
(то есть любой из четырех символов, но заключенный в двойные кавычки).
Так что вам нужно либо удалить "
со всего y
, n
, Y
и N
или поместите их вокруг %INPUT%
в ваших условных утверждениях. Я бы рекомендовал последнее, потому что таким образом вы бы экранировали по крайней мере некоторые символы, которые имеют особое значение в пакетных сценариях (если пользователю удалось их ввести). Итак, вот что вы должны получить:
If "%INPUT%"=="y" goto yes
If "%INPUT%"=="n" goto no
If "%INPUT%"=="Y" goto yes
If "%INPUT%"=="N" goto no
Кстати, вы можете уменьшить число условий, применив переключатель /I
к оператору IF
, например:
If /I "%INPUT%"=="y" goto yes
If /I "%INPUT%"=="n" goto no
Переключатель /I
делает сравнение нечувствительным к регистру, и поэтому вам не нужны отдельные проверки для строк с разными регистрами.
Один другая проблема заключается в том, что после выполнения команды режима разработки нет возможности перепрыгнуть через другую команду, и поэтому, если пользователь соглашается запустить Java в режиме разработки, он получит ее запуск как в режиме разработки, так и в режиме без разработки. Поэтому, возможно, вам нужно добавить что-то вроде этого в свой скрипт:
...
:yes
java -jar lib/RSBot-4030.jar -dev
echo Starting RSbot in developer mode
goto cont
:no
java -jar lib/RSBot-4030.jar
echo Starting RSbot in regular mode
:cont
pause
Наконец, чтобы решить проблему обработки неверных входных данных, вы можете просто добавить другую (безусловную) команду goto
сразу после условных операторов, просто перед меткой yes
, а именно goto Ask
, чтобы вернуться к началу вашего скрипта, где отображается приглашение и запрашивается ввод, или вы могли бы также добавить другую команду ECHO перед прыжком, объясняя, что ввод был неправильным, что-то вроде этого:
@echo off
:Ask
echo Would you like to use developer mode?(Y/N)
set INPUT=
set /P INPUT=Type input: %=%
If /I "%INPUT%"=="y" goto yes
If /I "%INPUT%"=="n" goto no
echo Incorrect input & goto Ask
:yes
...
Примечание: некоторые из упомянутых здесь вопросов также были рассмотрены @xmjx в своем ответе, который я полностью признаю.
Настройка командной строки.
Стандартное окно командной строки – это окно с символами белого цвета на черном фоне. Параметры шрифтов, цвет и фон символов, использование буфера обмена и прочие свойства командной строки можно изменить в соответствии со своими предпочтениями. Настройки можно выполнить изменяя свойства ярлыка, с помощью которого выполняется запуск приложения командной строки, либо правкой параметров реестра, относящихся к командному процессору.
Страница, посвященная настройкам командного процессора CMD
Работа в командной строке предполагает ввод данных с клавиатуры, при чем, иногда довольно большого объема. Этот объем можно значительно сократить, используя некоторые приемы:
Объединение нескольких команд в цепочку
В командной строке Windows существует возможность последовательного выполнения нескольких команд в зависимости от результатов их выполнения. Для чего используются символы объединения команд – & (амперсанд) и | (вертикальная черта)
& – одиночный амперсанд используется для разделения нескольких команд в одной командной строке. Например:
Перенаправление данных стандартного ввода /вывода консоли.
Как уже упоминалось, в качестве стандартного устройства ввода командной строки используется клавиатура, а в качестве устройства вывода – дисплей. Однако, существует возможность перенаправления ввода-вывода на другие устройства c использованием операторов перенаправления: