Batch script для начинающих
Мне 12 и я сам в этой теме плохо шарю, т.к. инфы в инете мало. Пж, без хейта.
Что такое батники и с чем их едят
Пакетный файл или в простонародье батник — это файл, который запускает командную сроку или сокращенно cmd, которая построчно интерпретирует команды, записанные в нем. Подробнее смотрите на https://ru.wikipedia.org/wiki/Пакетный_файл.
Первая программа и основные команды
Чтобы сделать батник, нужно сначала создать текстовый файл с именем test и изменить расширение c .txt на .bat. О том, как можно это сделать, читайте здесь: https://remontka.pro/file-extensions. У вас должен появиться файл с такой иконкой:
Нажимаем на него ПРАВОЙ кнопкой мыши. Должно появиться диалоговое окно. Нажмем «Открыть». Должен открыться блокнот, пишем:
@echo off echo Hello world! pause
В 1-ой сроке («@echo off») префикс ‘@ ‘ означает, что команда не будет выведена на экран(попробуйте его убрать 🙂 ), сама же команда (echo) выводит текст следующий за ней(см. строку 2), НО, если подать строку «off», все последующие команды будут действовать так, как будто перед ними стоит префикс ‘@’, «echo on», соответственно, выключает этот режим. Чтобы вывести символ «%», его нужно дублировать, потом поймете почему :-), для вывода пустой строки поставьте «.» после «echo»
В 3-ей строке команда выводит строку «press any key to continue . . .» (если у вас русский язык — «Для продолжения нажмите любую клавишу . . .») и останавливает программу до нажатия любой клавиши.
Наводим красоту
не делает ничего и служит комментарием к коду
rem Это самая лучшая прога в мире.
Код включает русские символы и другие из ascii(например: «╬▓☼», можно скопировать с http://pascalguru.ru/psevdograf.html), иначе ascii символы превратятся в кракозябры:
Следующий код код работает, как команда «pause», но ничего не выводит на экран и не реагирует на нажатие клавиш(я потом объясню, как это работает).
А этот — меняет заголовок окна на «name»
Эта команда меняет цвет фона и текста, вместо a и b можно поставить любые шестнадцатеричные цифры(команда не сработает если a = b) см. таблицу ниже. Запись c одной буквой «а» аналогично записи «0a»
Эта — досрочно завершает программу
Переменные
Создать переменную можно с помощью команды set, синтаксис объявления следующий: P.S. это не совсем переменные, это скорее макросы (для тех к кто не знает C/C++ это именованный кусочек кода, имя которого заменяется на этот кусочек кода)
Если после «set» добавить флаг «/a» то:
- Переменной задастся значение выражения, а не его текст, например:
Чтобы обратиться к переменной, нужно окружить ее символами «%» (так %name%), пример кода:
Подробнее о переменных
Если добавить флаг «/p», то выводиться значение после символа » bash»>@echo off set /p a=Enter str echo %a% pause
следующий код вырезает строку от символа номер «a» до символа номер «b» НЕ включительно(счет идет с нуля, отрицательные числа — счет с конца от единицы). Если аргумент один, то он присваивается числу «b», а «a» = 0
следующий заменяет подстроки «a» в строке на строки «b»:
Циклы и условия
Цикл можно создать с помощью команды «for», синтаксис следующий:
(a b c) это список (не обязательно из 3-х элементов) и переменная %%i (нужно ставить символ после процентов, а не между) по очереди проходит по значениям в списке
Если добавить флаг «/l», то переменная в первый раз будет равна «a». К ней каждый раз будет прибавляться «b», пока она не станет больше «c»(тут размер ДОЛЖЕН равняться 3)
запустите этот код, тут все наглядно
@echo off chcp 65001 echo Начало for /l %%i in (1 1 10) do echo %%i echo Конец pause
Команда if выполняет код, если условие верно (или если поставить not после if, когда НЕ верно), вот операторы сравнения:
P.S. строки нужно брать в кавычки «%str%»==»Hello»
Программирование в Cmd введение для новичков
21:33 14-11-2008 alexeykursk
Это всего лишь введение в команды cmd, не судите строго, статья писалась для Новиков, та и многим другим я думаю пригодиться =)
Наверно многие и не подозревают, что cmd это универсальная оболочка,
которая позволяет не просто администрировать систему, но и программировать!
Конечно уровень языка не столь высок, как например с , но все же.
Для начала, напишем маленькую программку, которая будет выводить строчку, записанную в переменную.
Заходим на диск С:\ и создаем там что то типа program_1.cmd (можно *.bat)
открываем его блокнотом и вписываем туда следующие строки:
rem программа_1
cls
@echo off
color 0A
set string=Hellow World.
echo %string%
rem — используеться для описния коментариев
cls — если кто еще незнает, это отчистка экрана
@echo off — выключаем отображение команд на экране. Обратите внимание на @
перед ECHO! Она предотвращает эхо-отображения команд в отдельной строке.
color 0A — задаем цвет фона и текста
set string=Hellow World. — set используется для описания переменных
echo %string% — вывод на экран переменной, обратите внимание на %%, это
обозначает, что это действительно переменная, а не строка!
С кодом разобрались, теперь посмотрим на исход программы! Запускаем ее на выполнение через cmd:
program_1.cmd
Результат выполнения будет, как вы догадались Hellow World. Ярко-зелеными буквами на черном фоне
Теперь немножко усложним задачку, добавим в этот код условие!
rem программа_2
cls
@echo off
color 0A
set a=1
set timer=10
if %a%==1 (shutdown /r -t %timer% -c «Вас похекали»
) else (echo a!=1)
Я думаю вы уже догадались что будет на выводе. Мы сравниваем значение записанное в переменную “а” с 1, если условие истина, то компьютер перезагрузиться через 10 секунд, в ином случае на вывод подается надпись, что a!=1. Пример банален и прост,
ну зато понятен для многих.
А теперь перейдем непосредственно к циклам. Рассмотрим самый элементарный пример:
rem программа_3
cls
@echo off
color 0A
for /l %B in (0,1,10) do echo %B
данная программа выведет в столбик цифры, от 0 до 10 с шагом 1 =) все просто, как .
А теперь немного сложнее, for может использоваться в более весомых целях,
например для перебора файлов, для примера можете написать в cmd:
for %B in (C:*.cmd) do (echo %B)
В ответ вы получите все ваши программки с расширением *.cmd
Также циклом for можно перебрать каталоги, к примеру
for /d %B in (C:*) do echo %B
Покажет все каталоги на диске С:\ (Обратите внимание, только каталоги, а не подкоталоги!)
А теперь напишем существенную программу, которая будет из базы выбирать емейлы и записывать их в другой файл.
(for /f «tokens=1-5» %A in (users.txt) do @echo %D) > emails.txt
К примеру, база у нас «идеальная», типа:
Vasya Pupkin heck 111@mail.ru 81231111111
Dima Ivanov lamer 222@mail.ru 81232222222
Genya Petrov lamer 333@mail.ru 81233333333
Egor Sidorov lamer 444@mail.ru 81234444444
Anton Popovich lamer 555@mail.ru 81235555555
Kostya Terentev lamer 666@mail.ru 81236666666
Vanya Onisenko lamer 777@mail.ru 81237777777
Misha Loshenko lamer 888@mail.ru 81238888888
Vlad Sorochinskiy lamer 999@mail.ru 81239999999
Мы с помощью цикла перебираем все слова, и записываем 4(%D) в файл emails.txt =)
Что же еще можно сделать с cmd?
Опишу свой пример. Я занимаюсь созданием веб-сайтов, которые используют базу данных mysql. С базой я работаю через консоль, для меня привычнее. Что б не париться я написал небольшую программку mysql.cmd которая к ней будет подключаться:
PHP код:
v:
cd usrlocalmysql4bin
mysql.exe -u root –p pass
v – виртуальный диск на котором стоит денвер
root – имя пользователя
pass – пароль пользователя
Нам остается ее запустить и наслаждаться работой с базой
PS Ну вот собственно и все! Статья получилось маленькой, но я все же надеюсь, что она кому то будет полена =)