Как создать bat файл
Содержание:
- Командная строка и команды
- Урок 6 по cmd — обзор цикла for командной строки |
- Как создать «батник» в операционной системе Windows 7
- Что такое bat-файл, зачем он нужен, и как правильно его запускать
- Другие возможности запуска батников
- Операторы перехода
- Код часто встречающихся команд:
- Что необходимо для создания батников на OS Windows
- Примеры bat файлов
- Часть третья. Резервное копирование при помощи батников
- Передача командному файлу параметров
- Длинные имена в bat-файлах
- Как одновременно выполнить несколько команд в командной строке
- Смена имен по маске из файла BAT
Командная строка и команды
Окно командного процессора в первозданном виде выглядит мрачно, и работать с ним большинству
людей не очень удобно. Намного проще пользоваться файловыми менеджерами в стиле Norton
Commander. В них предусмотрены как средства для быстрой навигации по файловой системе, так и
срока для ввода команд.
Для того чтобы ввести команду:
- Наберите текст команды в командной строке.
- Нажмите на клавишу Enter.
Командный процессор и команды операционной системы описаны в эксплуатационной документации на
последнюю. Эта документация частично содержится внутри самой операционной системы. Для доступа
к ней предназначена команда help. По этой команде на экран выводится список
доступных команд. Для того чтобы получить описание конкретной команды, в качестве параметра
команда helpследует указать ее имя. Командная строка, показанная на
следующем листинге, выводит на экран описание команды for.
help for
Если вы попробовали ввести команду help, то наверно обратили внимание, что
результат ее работы (т.н. выдача) не умещается на один экран
Та же проблема возникает с
текстом описания команды for. Хорошая новость состоит в том, что выдачу можно
перенаправить в файл. Командная строка, показанная на следующем листинге, формирует файл
commands.txt, содержащий список всех команд MS-DOS.
help > commands.txt
Для того чтобы сформировать файл с описанием команды for, надо дать такую
команду (имя выходного файла можете сделать любым).
help for > for.txt
Всего в современных операционных системах корпорации Microsoft чуть меньше 80 команд, и
описать их в одной статье невозможно. Здесь мы можем только упомянуть о нескольких командах,
полезных для автоматизации обработки файлов и показать, как ими пользоваться. Эти команды
будут в дальнейшем использоваться в примерах. Детали вы всегда сможете уточнить по команде
help или в справочнике.
copy — копирование одного или нескольких файлов;
del — удаление одного или нескольких файлов;
move — перемещение одного или нескольких файлов или каталогов;
rename (сокращенно ren) — переименование одного
или нескольких файлов или каталогов;
xcopy — копирование дерева подкаталогов;
mkdir (сокращенно md) — создание каталога;
rmdir (сокращенно rd) — удаление каталога.
Одно из общих правил синтаксиса команд MS-DOS состоит в том, что при указании параметров
сначала указывается источник, а котом результат. Например, если мы хотим переместить файл
beer.txt из каталога box в каталог
table, мы должны ввести команду, приведенную на следующем листинге.
move box\beer.txt table
Сначала что переместить, потом куда переместить.
Если мы хотим переименовать файл lena.txt в файл
natasha.txt, то команда должна быть записана так, как показано ниже.
ren lena.txt natasha.txt
Сначала что переименовать, потом во что переименовать.
Урок 6 по cmd — обзор цикла for командной строки |
В этой статье мы рассмотрим использование цикла for в командной строке, который, в отличии от аналогичных конструкций в других языках программирования, тут носит немного другой характер. Сперва, немного лирики…
В былые времена программирование носило совсем другие цели нежели теперь. Это теперь царит разнообразие различных языков: хочешь, пиши на php, хочешь, постигай вершины Delphi, в общем, все в изобилии и на любой вкус. Столь стремительный рост возможностей и средств для программирования затронул структуру и характер новых языков. Так, когда я еще проходил в школе на уроках информатики язык Pascal, то цикл использовался в основном для выполнения групповых математических задач: нахождение суммы чисел n-количества и групповое умножение. Теперь, ситуация немного другая, ведь помимо простой математики приходится работать с файлами, папками, объектами и коллекциями. И тут рождаются новые разновидности цикла:
В командной строке цикл един, но с помощью ключей можно менять структуру его применения: работа с файлами, с каталогами, банальный перебор значений или текстовых строк.
В этой статье мы рассмотрим общую структуру цикла командной строки, так сказать – сделаем краткий обзор. По ходу материала я буду давать ссылки на остальные статьи с описанием, уже узких примеров применения, и так, начнем…
Основной синтаксис применения следующий:
for итератор do (оператор)
Итератор – отвечает за ход выполнения. Тут определяется и условия и количество выполнения заданных операторов. Тут могут находиться как одна, так и несколько команд, которые можно объединить в одну цепочку, конвейер или группу (внутри скобок). Как и в стальных языках программировать, итератор содержит переменную инициализации (начальное значение), или же набор различных элементов – диапазон значений, группа файлов или папок.
На переменные инициализации распространяются следующие правила:
- Они существуют только в теле цикла командной строки
- В качестве имени нельзя использовать слово, например, myVar, а только латинские буквы в диапазоне от а до z или от А до Z, например %%А, %%В или %%С. Если вы используете цикл не в сценарии, а в окне консоли, то ставится только один символ %.
- Названия переменных итератора чувствительны к регистру символов, то есть, %%a и %%A будут отличаться.
Как я уже сказал, цикл в командной строке может изменять логику работы с помощью ключей, а именно:
for/D %%имя_переменной in (набор_каталогов) do оператор – как вы уже догадались, данный синтаксис применяется для групповой работы с каталогами. Об этом свидетельствует ключ /D (directory). Как и в случае с файлами, тут можно указывать шаблонный формат или список.
for /R %%имя_переменной in (набор_файлов) do оператор – данный синтаксис используется для групповой работы с подкаталоги, о чем говорит параметр /R. С его помощью можно задать путь к папке, а потом задать список и шаблон для файлов, в результате, мы можем обработать все документы заданного типа в заданном диске или папке.
Примеры работы с корневыми и вложенными папками рассмотрены в статье «Урок 8 по CMD«
for /L %%имя_переменной in (начало, шаг, конец) do оператор – отвечает за перебор значений. Параметры в круглых скобках задают начальное значение, шаг (может быть как положительным, так и отрицательным) и конечное значение.
for /F %%имя_переменной in (источник) do оператор – анализ текстовых файлов, строк и вывод команд. Данный синтаксис позволяет анализировать как содержимое файла, так и заданный текст. Плюс, можно задать параметры для анализа, например, число обрабатываемых строк, разделители и комментарии.
Примеры обработки текстовых строк рассмотрены в статье «Урок 9 по CMD«
for %%имя_переменной in (набор_файлов) do оператор – данный синтаксис применяется для групповой работы с файлами. Тут %%имя_переменной является переменной инициализации, которой будет присваиваться значение, заданное в “набор_файлов”, например, путь к заданному файлу. Так, набор_файлов может быть одной строкой определяющей группу документов по шаблону, или списком строк, разделенных пробелами.
Примеры работы с файлами и данными рассмотрены в статье «Урок 7 по CMD«
Спасибо за внимание. Автор блога
Как создать «батник» в операционной системе Windows 7
Сделать этот файлик может любой пользователь на компьютере, который имеет достаточно прав для создания и сохранения файлов. На счет выполнения немного сложнее — выполнение «батника» должно быть разрешено как и отдельно взятому пользователю, так и операционной системе в целом (запрет иногда накладывается в целях безопасности, ведь исполняемые файлы не всегда создаются для благих дел).
Будьте внимательны! Никогда не запускайте на компьютере файлы с расширением .BAT, скачанные из неизвестного или подозрительного ресурса, а также не используйте при создании такого файла код, в котором вы не уверены. Исполняемые файлы такого типа умеют шифровать, переименовывать или удалять файлы, а также форматировать целые разделы.
Способ 1: использование расширенного текстового редактора Notepad++
Программа Notepad++ является аналогом стандартного Блокнота в операционной системе Windows, значительно превосходя его в количестве и тонкости настроек.
- Файл можно создать на любом диске или в папке. Для примера будет использован рабочий стол. На свободном месте нажмите правую кнопку мыши, наведите курсор на надпись «Создать», в выпавшем сбоку окошке щелчком левой кнопки мыши выберите «Текстовый документ»
На рабочем столе появится текстовый файл, который желательно назвать так, как в итоге будет называться наш батник. После того, как имя для него определено, нажмите на документе левой кнопкой мыши, и в контекстном меню выберите пункт «Edit with Notepad++». Созданный нами файл откроется в расширенном редакторе.
shutdown.exe -r -t 00
После запуска этот батник перезагрузит компьютер. Сама команда означает запуск перезагрузки, а цифры 00 — задержку ее выполнения в секундах (в данном случае она отсутствует, то есть перезапуск выполнится незамедлительно).
Когда команда будет записана в поле, наступает самый важный момент — превращение обычного документа с текстом в исполняемый. Для этого в окошке Notepad++ слева вверху выберите пункт «Файл», затем нажмите на «Сохранить как».
Появится стандартное окно Проводника, позволяющее задать два основных параметра для сохранения — место и имя самого файла. Если с местом мы уже определились (по умолчанию будет предложен Рабочий стол), то именно в названии заключается последний шаг. Из выпадающего меню выберите пункт «Batch file».
К уже заданному ранее слову или фразе без пробела допишется «.BAT», и получится так, как на скриншоте ниже.
После нажатия на кнопку «OK» в предыдущем окне, на рабочем столе появится новый файл, который будет выглядеть как белый прямоугольник с двумя шестеренками.
Способ 2: использование стандартного текстового редактора Блокнот
Он обладает элементарными настройками, которых вполне хватает для создания самых простых «батников». Инструкция абсолютно аналогична предыдущему способу, программы лишь немного отличаются в интерфейсе.
- На рабочем столе двойным щелчком откройте ранее созданный текстовый документ — от откроется в стандартном редакторе.
В окошке редактора слева вверху нажмите на кнопку «Файл» — «Сохранить как…». Откроется окно Проводника, в котором необходимо указать место сохранения конечно файла. Здесь отсутствует способ задания необходимого расширения с помощью пункта в выпадающем меню, поэтому просто нужно дописать к названию «.BAT» без кавычек, чтобы получилось так, как на скриншоте ниже.
Оба редактора отлично справляются с созданием батников. Стандартный блокнот больше подходит для простых кодов, в которых используются несложные одноуровневые команды. Для более серьезной автоматизации процессов на компьютере необходимы продвинутые батники, которые с легкостью создаются расширенным редактором Notepad++.
Рекомендуется запускать файл .BAT от имени администратора, чтобы не возникало проблем с уровнями доступа к определенным операциям или документам. Количество задаваемых параметров зависит от сложности и назначения задачи, которую необходимо автоматизировать.
В этой статье рассмотрим два способа создания bat-файла: с помощью Проводника и с помощью Блокнота. Этого будет достаточно, чтобы создавать новые bat-файлы, но сперва определимся, для чего они нужны. Если совсем просто, то bat-файл нужен для того, чтобы один раз записать набор команд для командной строки Windows, а затем выполнять их в любое время не набирая каждый раз. В общем, идеальный вариант для ленивых и/или системных администраторов. =)
Сразу перейду к делу:
Что такое bat-файл, зачем он нужен, и как правильно его запускать
Львиная доля всех пользователей компьютерной техники регулярно проделывает однотипные задания (на форумах, называются повторяющиеся), чтобы достигнуть конечной цели. К ним относятся:
- повседневная работа с файлами и папками (а именно процессы по их перемещению, копированию, удалению или изменение их названий/имен), иногда наспех созданные данные нужно пронумеровать в строгой последовательности, и если каждым из них заниматься по отдельности, можно потратить не один час на такую «гульню»;
- регулярно используют для создания резервных копий;
- сюда же относятся процессы архивации и подобное.
С целью ускорить достижение конечного этапа основной задачи, нужно сократить трату времени на промежуточные задачи. Именно для этого и было разработано расширение *.bat, состоящее из пакетных данных, задача которого заключалась в последовательной активации каждого из них. Необходимо только задать перечень очередности выполнения заданий.
bat файл состоит из пакетных данных, задача которого заключается в последовательной активации каждого из них
Для работы с ними используется командная строка. Именно благодаря ей, можно спокойно прописать последовательность действий. Быть Гуру в этой сфере не обязательно, сгодится и поверхностное знание по написанию, и понимание синтаксиса.
Очень важно правильно запустить программу. Это ваш гарант на успешное выполнение предстоящей работы в целом, несмотря на то, работаете вы с обычными файлами, с системными данными операционной системы, или архивами (*.rar, *.zip и другими)
Запуск от имени администратора
Выполнение этой задачи требует соблюдения двух основных правил:
На компьютере всегда использовать только учетную запись – «Администратор.
Использование уч. записи – «Гость» — для этого не подходит! Проверить можно, зайдя в «Панель управления», потом выбрав – «Учетные записи пользователей», затем – «Управление» или «Изменение параметров». Результат должен быть таким же, как на скриншоте.
Выбор нового типа учетной записи
При необходимости нужно переставить галочку, сохранить и перезагрузить систему, чтобы изменения вступили в силу.
Запускать «Батники» строго через контекстное меню.
Левой кнопкой мыши выделяете иконку с расширением «бат», затем вызываете контекстное меню правой кнопкой, и нажимаете на запуск от имени «Администратора».
Запуск bat-файла через контекстное меню
Обычный запуск через двойное нажатие левой кнопки, в большинстве случаев будет приводить к некорректному выполнению задач, зачастую появляются пропуски файлов, или ошибки.
Другие возможности запуска батников
Мы рассмотрели только малую часть команд и возможностей BAT-файлов. Рассмотрим ещё несколько показательных примеров.
Запуск батников от имени администратора
Многие пользователи сталкивались с необходимостью запуска системных утилит, служб или программ с правами администратора. Подобная возможность имеется и для пакетных файлов.
Самый очевидный и простой способ запустить BAT-файл через командную сроку от имени администратора – кликнуть по имени этого файла ПКМ и выбрать из контекстного меню соответствующий пункт. Недостаток этого метода очевиден – эту процедуру придётся повторять каждый раз при запуске скрипта.
Но процесс можно автоматизировать – нужно создать для батника ярлык, в свойствах которого нажать кнопку «Дополнительно» и поставить галочку напротив фразы «Запуск от имени администратора». При этом пиктограмму для ярлыка можно выбрать по своему усмотрению, что полезно, если таких батников у вас много.
Запуск скриптов по расписанию
В принципе для этих целей можно использовать уже упоминавшуюся директиву timeout с параметром /t, но её возможности сильно ограничены. Оптимальным способом будет использование системного «Планировщика задач».
Для этого запускаем «Планировщик» (например, через консоль «Выполнить», набрав команду taskschd.msc), выбираем нужный триггер, кликаем на опции «Запустить программу» и указываем полный путь к батнику. Этого достаточно, чтобы наш пакетный файл запускался по расписанию.
Скрытый запуск батника
Поскольку выполнение скрипта требует запуска интерпретатора командной строки, при запуске BAT-файлов на экране всегда мелькает чёрное окно консоли. Некоторых оно раздражает, некоторых – пугает. Можно ли запускать пакетные файлы в скрытом режиме? Оказывается, да, причём разными способами.
Простейший метод заключается в создании ярлыка на пакетник, в свойствах которого во вкладке «Окно» указываем опцию «Свёрнутое в значок». В результате запуска такого скрипта рабочий стол будет оставаться девственно чистым, единственным напоминанием о наших действиях будет появление пиктограммы CMD в области панели задач.
Если вас и такой вариант не устраивает, можно использовать так называемый «костыль» – специальный скрипт VBS, запускающий BAT-файл в скрытом режиме.
Содержимое такого скрипта, который нужно сохранить под именем hidden.vbs:
Здесь вместо D:\script.bat нужно указать полный путь к вашему батнику.
Итак, мы рассмотрели несколько способов, как создать и запустить BAT-файл, познакомились с основами его синтаксиса, а более детальную информацию можно найти в интернете. Весьма полезным будет прочтение учебника «Командная строка MS Windows» от Уильяма Станека, изданного в 2004 году и до сих пор не утратившего актуальности.
Операторы перехода
Командный файл может содержать метки и команды GOTO перехода к этим меткам. Любая строка, начинающаяся с двоеточия :, воспринимается при обработке командного файла как метка. Имя метки задается набором символов, следующих за двоеточием до первого пробела или конца строки. Приведем пример.
Пусть имеется командный файл следующего содержания:
После того, как в этом файле мы доходим до команды
его выполнение продолжается со строки
В команде перехода внутри файла GOTO можно задавать в качестве метки перехода строку :EOF, которая передает управление в конец текущего пакетного файла (это позволяет легко выйти из пакетного файла без определения каких-либо меток в самом его конце).
Также для перехода к метке внутри текущего командного файла кроме команды GOTO можно использовать и рассмотренную выше команду CALL:
При вызове такой команды создается новый контекст текущего пакетного файла с заданными аргументами, и управление передается на инструкцию, расположенную сразу после метки. Для выхода из такого пакетного файла необходимо два раза достичь его конца. Первый выход возвращает управление на инструкцию, расположенную сразу после строки CALL, а второй выход завершает выполнение пакетного файла. Например, если запустить с параметром «Копия-1» командный файл следующего содержания:
то на экран выведутся три строки:
Таким образом, подобное использование команды CALL очень похоже на обычный вызов подпрограмм (процедур) в алгоритмических языках программирования.
Код часто встречающихся команд:
Пример автоматизированного удаления файлов по типу
del /f /s /q C: *.tmp
Пример пинга. Тестирования работы интернета или доступности сайта
ping ya.ru
Пример подключения сетевого диска
net use NET USE Q: \\Servak\e\Торрент
Net use — это команда подключения
Q — Это название сетевого диска
\\Servak\e\Торрент — это путь до нужной папки. Server — имя сервера, e — имя диска, Торрент — сама папка.
Пример копирования с диска D в сетевую папку
copy D:\backup\*.rar \\server\arhiv\
Удаление файл
Del d:\test.doc
Проверка диска на наличие ошибок
CHKDSK
Перезагрузить ПК
shutdown -r
Выйти из учетной записи пользователя ( актуально в урезанных версиях Win XP)
shutdown -i
Отмена перезагрузки
shutdown /a
Пример вывода на экран сообщения
echo on
msg * Hello
pause
Вывести настройки сетевых плат
ipconfig
Уважаемые посетители сайта, если вам нужна помощь в решении проблем, то оставляйте комментарий в форме, а не Вконтакте. Так я смогу быстре ответить на ваш вопрос
Если есть желание поблагодарить за помощь, просьба поддержать просмотрами видео на канале в YouTube
https://youtube.com/watch?v=videoseries
Или можете помочь проекту материально
Что необходимо для создания батников на OS Windows
На сегодня существует только один метод для правильного создания, вам потребуется:
- заготовленный перечень специальных команд Бат-файлов;
- электронный блокнот, стандартная программа на вашем ПК;
Электронный блокнот
найти и скачать программу «Notepad++», на просторах Интернета (приложение бесплатное, скачивать лучше с официального сайта).
Notepad++
Дальнейшая работа будет построена в строгой последовательности, где мы разберем, с чего начинается создание текстового документа, затем настройка программы (с целью распознания специальных команд для bat), обязательно покажем, как прописать простейшую команду и в заключение, как правильно сохранить.
Примеры bat файлов
С помощью пакетных файлов можно делать огромное количество различных действий, которые очень сложно/долго, а в некоторых ситуациях, просто невозможно выполнить без использования bat файлов, т.к. необходимо либо приобретать специальный софт под конкретную задачу (пример — массовая конвертация картинок в папке(ах) по ключу в названии, либо самостоятельно писать такую программу на каком-либо языке программирования, что сможет далеко не каждый, да и целесообразность этого, для разового действия минимальна. На нашем сайте есть несколько примеров использования пакетных файлов для решения специализированных задач, которые, возможно, смогут вам помочь.
- Как автоматизировать запуск bat-файлов
- Как автоматически ответить на запрос о подтверждении с помощью bat-файла
- Как выполнить цикл определенное число раз в bat-файле
- Как добавить комментарии в bat-файл
- Как дождаться появления определенного файла в папке с помощью bat-файла
- Как завершить процесс (программу) с помощью bat-файла
- Как запретить повторный запуск приложения с помощью bat-файла
- Как зациклить выполнение команды с помощью bat-файла
- Как из одного bat-файла запустить другой
- Как изменить IP адрес компьютера с помощью bat-файла
- Как изменить дату с помощью bat-файла
- Как изменить значение параметра в реестре с помощью bat-файла
- Как изменить название процессора в Windows с помощью bat-файла
- Как импортировать значения переменных реестра с помощью bat-файла
- Как использовать символ процента в bat-файле
- Как настроить кодировку шрифтов (исправить иероглифы, кракозябры) в bat-файле
- Как отключить вывод на экран команд при выполнении bat-файла
- Как отправить сообщение по сети из bat-файла
- Как переименовать файлы по маске с помощью bat-файла
- Как перенаправить результат выполнения команд в лог-файл с помощью bat-файла
- Как присвоить переменной значение из реестра с помощью bat-файла
- Как проверить наличие прав администратора с помощью bat-файла
- Как сделать автоматическое создание резервной копии данных с помощью bat-файла
- Как сделать резервную копию файлов с сервера FTP с помощью bat-файла
- Как сделать экспорт реестра с помощью bat-файла
- Как сменить аудио устройство по умолчанию с помощью bat-файла
- Как создать бекап на сервере с подстановкой даты в имя архива с помощью bat-файла
- Как создать папку с помощью bat файла
- Как создать папку с именем равным текущей дате с помощью bat-файла
- Как создать паузу перед выполнением следующей команды с помощью bat-файла
- Как создать файл с произвольным именем с помощью bat-файла
- Как удалить файлы определенного типа с помощью bat-файла
- Как узнать имя компьютера с помощью bat-файла
- Как узнать разрядность версии Windows с помощью bat-файла
Часть третья. Резервное копирование при помощи батников
Резервное копирование данных — полезное и оттого весьма распространенное явление. Существует большое количество программ, отличающихся друг от друга функционалом, условиями распространения, уровнем (глубиной вопроса) и т.д. Бесспорно, пользоваться хорошей и красивой программой удобно и приятно, но если ваши задачи не слишком сложны, то элементарное создание бэкапов можно организовать и без использования стороннего софта, исключительно средствами ОСи.
Для копирования каких-либо данных используется команда copy (копирование файла/файлов) или xcopy (копирование каталогов). Т.е., допустим, нам необходимо делать бэкап содержимого папки, в которой находятся ваши данные к дипломной работе (материалы, приложения, черновик самой работы и т.д.).
В этом случае текст будет следующим
@echo off chcp 1251 xcopy "D:\diplom\*.*" "E:\backup\diplom\*.*"
Где D:\diplom\ — папка расположения всех материалов к диплому, а E:\backup\diplom\ — конечная директория резервной копии.
Создаём батник, кидаем его в автозагрузку (пуск — все программы — автозагрузка), и при каждом включении компьютера будет создаваться резервная копия (рк).Чуть усложним. Сделаем, чтобы при включении ПК старые данные сохранялись в папочке diplom_old, а новые в папочке diplom. Тогда батник будет иметь вид
@echo off chcp 1251 del "E:\backup\diplom_old\" /s /q rmdir "E:\backup\diplom_old\" /s /q rename "E:\backup\diplom\" "diplom_old" xcopy "D:\diplom\*.*" "E:\backup\diplom\*.*"
del удаляет ранее созданную вторую рк.rmdir переименовывает первую рк во вторую.xcopy создаёт новую рк.
Атрибут /s применяет команду ко всем подкаталогам, атрибут /q отключает запрос на подтверждение действий.Если в двух копиях смысла нет, можно сделать так, чтобы заменялись только те файлы, которые были изменены, те же, которые не изменились, либо вообще были удалены из исходной папки, затронуты не будут. Для этого пишем следующее
@echo off chcp 1251 xcopy "D:\diplom\*.*" "E:\backup\diplom\*.*" /E /F /H /R /K /Y /D
Создание бэкапа в архиве
Ну и последнее, что здесь стОит рассмотреть, наверное, на данном этапе — это бэкапы в архиве
Рассмотрим изменённую предыдущую ситуацию. Допустим, нам надо, чтобы при каждом включении ПК создавалась копия папки, запакованная в архив.
Нам необходимо в автозагрузку положить батник со следующим содержимым
@echo off chcp 1251 c:\PROGRA~1\WinRAR\WinRAR.exe a -o+ -agDD-MMM-YY–HH-MM-SS "E:\backup\" "D:\diplom\"
Архив папки D:\diplom будет создаваться в E:\backup, именем будет дата и время создания архива, т.е., например 16-Aug-12–14-06-53
Передача командному файлу параметров
Предположим, мы хотим создать командный файл, который сначала формирует справку с описанием
заданной пользователем команды, а потом загружает его для просмотра в блокнот. Фокус в том,
чтобы при очередном запуске командного файла каким-то образом сообщить ему, какая именно
команда нас интересует на этот раз.
Для решения этой задачи предусмотрен механизм обработки параметров. Работает он довольно
просто. Если при запуске командного файла пользователь указал несколько параметров, то в
тексте командного файла первый из них мы обозначаем записью %1, второй
записью %2, третий записью %3 и т.д. Этими обозначениями мы
пользуемся в тексте командного файла примерно так же, как в естественной речи местоимениями.
Текст командного файла, решающего поставленную задачу, приведен на следующем листинге.
Обратите внимание на команду help. В качестве ее параметра ей передается
первый параметр командного файла
@echo off rem Формируем файл с описанием команды, rem имя которой передано параметром help %1 > help.tmp rem Загружаем файл описания в редактор Блокнот notepad help.tmp
Предположим, что мы присвоили этому командному файлу имя show-help.bat. Для
того чтобы загрузить в блокнот описание команды, например, dir, мы должны
ввести команду следующим образом.
show-help.bat dir
Следующий командный файл создает каталог с именем, указанным в первом параметре, и записывает
в него файл с текстом описания команды, указанной во втором параметре.
rem Пример командного файла с двумя параметрами rem Создаем каталог с именем, заданным первым параметром md %1 rem Создаем в нем файл с описанием команды, rem заданной вторым параметром help %2 > %1\%2.help
Что произойдет, если пользователь при запуске этого командного файла укажет не два, а четыре
параметра? Ничего страшного, они ничему не помешают, просто не будут использованы. А что
будет, если пользователь укажет только первый параметр? Второй параметр окажется пустым.
Эффект получится такой: командный файл будет выполнен, но так, как будто на месте записи
%2 ничего нет. Команда help сформирует список всех команд и поместит его в
файл с пустым именем и расширением.help. Если же пользователь запустить этот файл, не указав
ни одного параметра, то при попытке командного процессора выполнить команду md
(напомним, она предназначена для создания каталога), мы получим сообщение о
синтаксической ошибке, поскольку у команды md обязательно должен быть параметр.
Таким образом, использование параметров создает большие возможности, но может существенно
усложнить дело. Для того чтобы командный файл всегда работал корректно, необходимо проверять
корректность указания пользователем параметров и каким-то образом реагировать на неполные или
неверные входные данные. Можно, конечно, этого и не делать, но некорректно работающий
командный файл может наломать дров, особенно, если он предусматривает удаление или перезапись данных.
Длинные имена в bat-файлах
Иногда в bat встречаются программы, не работающие с длинными именами с пробелами – обычно это некоторые старые программы для MS-DOS. В этих случаях помогает использование коротких DOS-имен без пробелов, а также кавычек.
Правила записи коротких DOS-имен (формат 8.3): задействуется шесть начальных символов имени папки, не учитывая пробелы, далее указывается ее номер по порядку через ~. Например: start C:Program FilesMozilla Firefoxfirefox.exe преобразуется в: start C:Progra~1Mozill~1firefox.exe.
Возможна ситуация, когда в одном каталоге имеются несколько папок с одинаковыми символами в названии.
В одном каталоге имеются несколько папок с одинаковыми символами в названии
Их короткие имена в этом случае должны нумероваться в соответствии с алфавитным порядком папок:
- Mozill~1;
- Mozill~2;
- Mozill~3.
Однако, если Mozilla Firefox будет удален с компьютера, следующие за Mozill~1 записи работать не будут. Поэтому, короткие DOS-имена – не лучший вариант решения проблемы длинных имен. Создание имен этого типа на NTFS также бывает отключено в реестре Windows.
Для решения проблемы длинных имен запись также может быть заключена в кавычки. Кавычки «», располагающиеся перед прописываемым путем к запускаемому файлу, являются обязательным атрибутом, включающим какой-либо заголовок или только кавычки.
Кавычки, располагающиеся перед прописываемым путем к запускаемому файлу, являются обязательным атрибутом
Однако, в некоторых случаях кавычки не работают совсем. В этом случае возможно использование команды изменения текущего рабочего каталога Chdir (CD). Запись start firefox.exe приобретает в этом случае следующий рабочий вид.
Запись start firefox.exe приобретает рабочий вид
Справка. Команда CD – пожалуй, единственное универсальное решение вопроса длинных имен в bat-файлах.
Как одновременно выполнить несколько команд в командной строке
Для объединения команд в командной строке в одну строку, используются специальные символы, которые называются символами условной обработки. У командного процессора в MS-DOS и интерпретатора командной строки Windows в виде COMMAND.com или CMD.exe их существует в количестве пяти штук, но нас интересует только три из них.
Для экранирования описанных ниже символов , , следует использовать специальный символ .
Символ: и Написание в одну строку: (команда 1 & команда 2) && команда 3
В некоторых случаях может понадобится написать более сложные условия выполнения команд в одной строке, где от результата выполнения команды зависят дальнейшие действия. Здесь на помощь придут операторы ( и ), позволяющие группировать команды. К примеру, нужно проверить наличие файла по адресу F:data.txt, и если он есть — открыть его в Блокноте, если же его нет — предварительно скопировать его по адресу D:data.txt и уже после этого открыть в Блокотне.
В прочем ничто не мешает изменить условия, заменив операторы, и подстроив команды под нужный Вам сценарий.
Смена имен по маске из файла BAT
В некоторых ситуациях поставлена задача сменить названия всех файлов в папке с применением определенного шаблона из пакетного документа. Предполагается использование следующей команды:
for /f «tokens=*» %%a in (‘dir /b PATH\*.*’) do ren PATH\%%a Prefix%%a
Требуется выполнить некоторые замены в зависимости от конкретной ситуации. Вместо PATH\ устанавливается расположение документов, название которых должно быть изменено. Prefix требуется заменить на символы, добавляемые к файлу в процессе смены имени. Важным условием является расположение самого файла BAT. Он не должен находиться в папке, где происходит переименование, иначе название документа будет изменено. Другой особенностью является работа с подпапками. Они не смогут избежать общей процедуры смены имени и к названию также добавится префикс.
Имеется возможность осуществить процедуру исключительно по отношению к некоторым типам файлов. Для этого в прописанной ранее строке надо изменить *.* на другой вариант – после звездочки указывается интересующее расширение (*.txt или иное). Это позволит переименовать только документы определенного вида. Пример с несколько другим подходом написан ниже:
set thePATH=C:\test
for %%I in (*.txt) do ren «%thePATH%\%%~nxI» «%%~nI.dat»