Базовый набор средств, без примеров, потому что примеры, вы сможете запустить у себя сами и посмотреть, как это работает в живую.
Директория | Она же папка, она же поддиректория, абсолютно идентичные термины. Скажу честно, я иногда путаюсь. Папка короче, но термин "подпапка", звучит как-то ненормально, а поддиректория громозко и то и другое, вызывает желание воспользоваться другим термином. | ||||||||||||||
Текущая директория | Когда работаем, то мы обязательно находимся в какой-то папке.
Именно она и называется текущей. Папка выше из которой наша появляется, называется родительской. Например: c:\Windows\System32\SvcHost.exe
| ||||||||||||||
Точка. Обозначает текущую директорию. Наше текущее местонахождение всегда можно обозначить точкой. | |||||||||||||||
Две точки. Родительская директория. Из корневой папки выйди, естественно, нельзя. |
Если из .cmd файла, вызывается другой, то исполнение первого на этом прекращается.
Чтобы этого не происходило можно вызвать исполнение через "call", тогда управление вернется на следующую за "call" команду. Еще можно переходить на метку внутри .cmd файла, тогда это выглядит, как вызов .cmd который начинает исполнение с этой метки. | |
Это команда вывода на экран текста. Вы пишите Echo Hello World. И получаете на экране Hello World | |
Когда начинаете активно работать с переменными окружения, например path, то эта команда позволяет сохранить текущее окружение, чтобы потом восстановить и одним махом отменить все изменения. Полезно использовать, если вы делаете вызов .cmd файла из .cmd файла через call.
Вызов .cmd через cmd /c имяфайла.cmd можно не предварять, потому что запуск cmd создаст новую копию окружения для cmd.exe, который вызовет имяфайла.cmd и после его отработки, процесс cmd.exe вслед за ним прекратит свое существование вместе со всей средой, порожденной для него средой | |
Восстанавливаем сохранение, сделанное в предыдущей команде. | |
Самая гибкая команда. Именно при помощи нее можно делать то колдовство, которое и называется shell программированием.
О ней я расскажу подробнее ниже. | |
Переход на метку, абсолютный переход. Разрушает сразу и начисто вложенность круглых скобок, объединяющих операторы. | |
Условный оператор.
Сравнивает строки, числа от -2147483647 до 2147483646, позволяет проверять наличие файлов. | |
Выводим сообщение типа: "Press any key to continue" и ждем нажатия любой кнопки. | |
Ремарка. Все что после Rem игнорируется до конца строки. | |
Сдвиг. Распространяется на параметры командной строки. Делая первым второй, вторым третий, третьим четвертый и так далее. Самый первый теряется. Однако через %* всегда можно получить строку целиком. |
Еще одна важная деталь, которая нам понадобится это перенаправление вывода.
В нашем распоряжении экран и клавиатура. Два средства вывода информации и ее ввода.
Из языка C к нам пришло 3 названия: Stdin, Stdout, Stderr.
Очевидно везде наличие "Std" - это от "Standart", то есть стандартное, а дальше:
Описание | Номер(хендл (от англ. handle)) | |
Ввод | ||
Вывод | ||
Вывод ошибок |
Программы могут принимать данные и выдавать их.
Прием идет через стандартное устройство ввода (Stdin), вывод идет через стандартное устройство вывода (Stdout), а если какие ошибки возникают, то ошибки выводятся на стандартное устройство вывода ошибок (Stderr).
Так как экран один, то стандартное устройство вывода и ошибок одно и тоже - экран.
На глаз, никак не определить, что было выведено через stdout, а что через stderr.
Эти каналы можно между собой замыкать и копировать один в другой, для этого есть специальные операторы(значки), которые позволяют вывод одного передать на вход другого.
Описание | |
Перенаправление Stdout в файл.
Если файла не было, то он создастся; Если файл был, то он обнулится; Если файл создать не получится, то на Stdout будет выдана ошибка, о невозможности создания. | |
Перенаправление Stdout в файл.
Если файла не было, то он создастся; Если файл был, то в конец ему добавится, то что должно; Если файл создать не получится, то на Stdout будет выдана ошибка, о невозможности создания или записи. | |
Перенаправление Stdout в файл, который уже открыт ранее
Знак "&" означает, что далее будет идти порядковый номер открытого файла. Идея заключается в том, чтобы данные из нескольких потоков завернуть в один поток. Наиболее распространенный это заворачивание Stdout и Stderr в один файл. Делается это таким образом: find /i "abcd" blablabla.lala >TempFile.txt 2>&1 Поиск строки "abcd" в файле "blablabla.lala", так как такого файла у вас скорее всего нет, то будет выдана ошибка на stderr: "File not found - blablabla.lala"
В первую очередь отрабатывается ">" - создается файл "TempFile.txt", если не существовал или обнуляется, если там что-то было. И на него замыкается стандартное устройство вывода. Потом дальше он натывается на ">" смотрит вокруг и видит слева от него "2", что означает Stderr, а справа "&" с числом "1". Поэтому он Stderr перенаправляет на Stdout, а stdout у нас уже перенаправлен в TempFile.txt. В результате файл TempFile.txt оказывается неким эквивалентом экрана, который тоже совмещает в себе два устройства вывода. | |
Подмена Stdin значениями из файла | |
Перенаправление существующих хендлов. Пренаправляется тот, что справа в тот, что слева. | |
Вывод одной команды перенаправляется на вход другой команды.
Самое мощное применение, которое я видел это без вопросовудаление всех файлов в текущей папке.Echo Y|del *.* Обычно del *.* спрашивает уверены ли вы в том, что собираетесь удалить все файлы. И предлагает на выбор Y(да) или N(нет). Здесь команда Echo Y - осуществляет вывод буквы "Y", которая через перенаправляение тут же подсовывается вопрошающей del *.*. После чего эта команда победно удаляет все файлы. |
И последнее достаточно важное, без чего нам не обойтись - это команды, которые позволяют манипулировать файлами, папками и прочими весьма важными для нас аспектами среды. Список не полный. За полным списком можно обратиться к встроенной помощи Windows или в командной строке набрать "HELP", после чего по каждой команде можете получить более подробную справку дав ей в качестве параметра "/?".
Например:
"Dir /?" - показывает подсказку по синтаксису команды "Dir"
CHDIR | Изменить текущую папку на указанную. |
Очистка экрана. | |
Копирование файла. Копируем ОТКУДА КУДА.
Например:
Вместо "%temp%" подставится переменная окружения "temp"
Copy c:\autoexec.bat c:\autoexec.bat.cpy Копирует файл autoexec.bat из корня c:\ туда же, но под другим названием: "autoexec.bat.cpy".
| |
Показывает и ждет ввода новой даты.
Если в командной строке задать "/t", то команда только покажет текущую дату. | |
ERASE | Удаляет файл.
Если в командной строке задать маску (например: *.* или ??.jpg), то соответственно будут удалены все файлы с любым именем и любым расширением или файлы имеющие в названии два любых символа и с расширением jpg |
Просмотр файлов в текущей директории(папке)
В качестве параметра может принимать папку, содержимоей которой надо показать и маску файлов, которые надо показать. | |
Вывод текстового сообщения. | |
Выход из .cmd файла;
Выход из cmd shell, если в нем были | |
Устанавливает текущую метку тома.
Любой диск как-то можно называться. Адресовать его по имени не получится, но тем не менее, при отработке некоторых команд, оно обображается, что порой бывает удобно. | |
MKDIR | Создать папку. |
Перенос файла из одного места в другое.
Либо переименование. Особенностью этой команды является, то что при переносе в рамках одной логической буквы диска, копирования и удаления не происходит. Изменяется только техническая информация какой папке принадлежит файл. Особенно это явно ощущается на огромных по размеру файлах. Перемещение происходит мгновенно. | |
Команда управляющая переменой окружения "Path".
Эта переменная отвечает за поиск файлов, не найденных в текущей папке, она содержит список путей, где стоит поискать файл удовлетворяющий запрошенному имени, перед выводом ошибки о невозможнсти запуска файла или команды. | |
Преостановление исполнения .cmd файла до нажатия какой-либо клавиши. | |
Быстро восстанавливаем текущую рабочую директорию | |
Приглашение.
Когда запускаете cmd и у вас открывается окно shell. То вы видите пришлашение, что-то вроде: C:\WINDOWS> Командой prompt можно управлять этим приглашением. | |
Сохраняем текущую папку в памяти, чтобы потом командой POPD, можно было быстро вернуться назад, после серии переходов между папками. | |
RMDIR | Удаление папки.
Удаляется только, если она пустая. Есть ключик, который на ее заполненность закрывает глаза и рубит все что внутри. Весьма полезно при чистки кеша Internet Explorer. |
Комментарий | |
RENAME | Переименование. Переименовываем ЧТО во ЧТО. |
Команда управляющая переменными окружения. Также может применяться для небольших целочисленных числовых операция, типа: плюс, минус, разделить, умножить и так далее. | |
Запоминаем состояние всех текущих переменных окружения, в том числе и режимы выполнения .cmd файла. | |
Сдвиг адресующих индексов (%1,%2,%3...%9) параметров командной строки .cmd файла.
Иногда применяется для доступа к параметру следующему за 9м, последним, который можно прямо адресовать из .cmd файла. | |
Показывает и ждет ввода нового времени.
Если в командной строке задать "/t", то команда только покажет текущее время. | |
Показывает на Stdout содержимое указанного в команной строке файла | |
Показывает текущую версию. | |
Показывает текущую метку тома. Которая может быть установлена командой Volume | |
Если вы указываете букву диска, то вы приказываете системе сменить текущий диск на указанный.
Обычно за этим следует последовательные команды CD, ну а там, что планировали дальше. |
(c) 2006-2012
by Foto-Workshop.
Перепечатка или цитирование свободно при
условии, указания ссылки на данный источник,
но только в случае, если не оговорены дополнительные условия.