Для чего используются пакетные файлы
Пакетный файл
Пакетный файл (англ. batch file ) — текстовый файл в MS-DOS, OS/2 или Windows, содержащий последовательность команд, предназначенных для исполнения командным интерпретатором. После запуска пакетного файла, программа-интерпретатор (как правило, COMMAND.COM или cmd.exe) читает его строка за строкой и последовательно исполняет команды. Пакетный файл — аналог cкриптовых файлов командной строки (shell script) в Unix-подобных операционных системах.
Содержание
История
Поддержка пакетных файлов имелась в MS-DOS с самого начала. Командные интерпретаторы этой системы (а затем и Windows) предлагают два режима работы: интерактивный (когда пользователь непосредственно вводит команды в командной строке и немедленно их исполняет) и пакетный (когда пользователь запускает предварительно записанную последовательность команд). Концепция обоих режимов была почерпнута из интерфейсов командной строки предшествующих ОС (таких как CP/M) и Unix-оболочек.
Командный интерпретатор в MS-DOS (а следом и в семействе Windows 9x) имеет название COMMAND.COM. Наиболее известным пакетным файлом в этих системах является AUTOEXEC.BAT, который автоматически исполняется COMMAND.COM во время загрузки операционной системы.
Семейство Windows NT (2k, XP и далее) не основаны на MS-DOS и включают интерпретатор cmd.exe, который частично совместим с COMMAND.COM. Некоторые старые возможности COMMAND.COM в нём недоступны, однако вместо них появились новые. COMMAND.COM включается в NT-подобные системы для обеспечения лучшей обратной совместимости.
Существуют и другие командные интерпретаторы, разработанные сторонними компаниями и предоставляющие расширенный синтаксис команд для пакетного программирования — например, 4DOS (англ.).
Также, существуют компиляторы пакетных файлов (например, Bat To Exe Converter), преобразующие пакетные файлы в самостоятельные исполнимые программы.
Применение
Пакетные файлы полезны для автоматического запуска приложений. Основная область применения — автоматизация наиболее рутинных операций, которые регулярно приходится совершать пользователю компьютера: например, копирование, перемещение, переименование, удаление файлов; работа с папками; архивация; создание резервных копий баз данных и т. п.
Многие вирусы написаны в виде пакетного файла, [источник не указан 56 дней] известны даже генераторы вирусов, [источник не указан 56 дней] являющиеся пакетными файлами.
Содержание
Пакетные файлы поддерживают операторы if, goto и for (в системах семейства Windows NT его возможности существенно расширены), что позволяет обрабатывать результаты выполнения предыдущих команд или приложений и в зависимости от этого выполнять дальше тот или иной блок команд (как правило, в случае удачного завершения приложение возвращает 0 в переменной errorlevel; в случае неудачного — 1 или большее значение).
Пример
Пример пакетного файла, вычисляющего выражения:
См. также
Ссылки
Полезное
Смотреть что такое «Пакетный файл» в других словарях:
Файл (компьютер) — Файл (англ. file папка, скоросшиватель) концепция в вычислительной технике: сущность, позволяющая получить доступ к какому либо ресурсу вычислительной системы и обладающая рядом признаков: фиксированное имя (последовательность символов, число или … Википедия
Файл — У этого термина существуют и другие значения, см. Файл (значения). Файл (англ. file) блок информации на внешнем запоминающем устройстве компьютера, имеющий определённое логическое представление (начиная от простой последовательности… … Википедия
Компьютерный файл — Файл (англ. file папка, скоросшиватель) концепция в вычислительной технике: сущность, позволяющая получить доступ к какому либо ресурсу вычислительной системы и обладающая рядом признаков: фиксированное имя (последовательность символов, число или … Википедия
Командный файл — текстовый файл, каждую строку которого операционная система интерпретирует как обращение к той или иной функции ОС. Командные файлы используется для организации пакетной обработки. Синонимы: Пакетный файл См. также: Файлы Обработка данных… … Финансовый словарь
Файлы — Файл (англ. file папка, скоросшиватель) концепция в вычислительной технике: сущность, позволяющая получить доступ к какому либо ресурсу вычислительной системы и обладающая рядом признаков: фиксированное имя (последовательность символов, число или … Википедия
Дальнобойщики 2 (игра) — Эта статья или раздел нуждается в переработке. Пожалуйста, улучшите статью в соответствии с правилами написания статей. У этого термина … Википедия
Пакетные файлы (bat, батники) Windows
Содержание статьи:
Вместо вступления. Что такое «батник»
Для удобства написания и, естественно, восприятия разобью статью по разделам. Но сначала:
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Некоторые манипуляции с пакетными файлами могут нанести вред системе (порой даже непоправимый), поэтому предупреждаю сразу, ни автор статьи, ни администрация сайта не несут абсолютно никакой ответственности за последствия, которые может повлечь за собой выполнение действий, представленных в этой статье. Все материалы представлены здесь исключительно с образовательной целью, и для ознакомления. Надеюсь на ваше понимание и прямоту ваших рук.
Часть первая. Основные моменты при создании bat-файлов
Часть вторая. Синтаксис при написании bat-файлов
Приступим.
Часть третья. Резервное копирование при помощи батников
Автоматическое копирование каталогов в папку backup
Для копирования каких-либо данных используется команда copy (копирование файла/файлов) или xcopy (копирование каталогов). Т.е., допустим, нам необходимо делать бэкап содержимого папки, в которой находятся ваши данные к дипломной работе (материалы, приложения, черновик самой работы и т.д.).
В этом случае текст будет следующим
del удаляет ранее созданную вторую рк.
rmdir переименовывает первую рк во вторую.
xcopy создаёт новую рк.
Атрибут /s применяет команду ко всем подкаталогам, атрибут /q отключает запрос на подтверждение действий.Если в двух копиях смысла нет, можно сделать так, чтобы заменялись только те файлы, которые были изменены, те же, которые не изменились, либо вообще были удалены из исходной папки, затронуты не будут. Для этого пишем следующее
Создание бэкапа в архиве
Архив папки D:\diplom будет создаваться в E:\backup, именем будет дата и время создания архива, т.е., например 16-Aug-12–14-06-53
Часть четвертая. Автоматизация процесса создания и удаления файлов/каталогов с использованием bat-файлов
Как создать папку из батника
Начнём с самого простого. Создание папки. Папка создаётся командой MD
Чтобы создать папку с именем backup в корне диска D:\, нам необходимо собрать следующего вида пакетный файл
Если же, допустим, нужна каждый день новая папочка с датой на месте имени, то батник будет иметь вид
Здесь строчкой set datetemp=%date:
-10% мы создаём переменную datatemp на время работы батника и присваиваем ей 10 символов значения системной даты;
Как создать текстовый файл из батника
С созданием пустых текстовых файлов дело чуть сложнее. Такой команды просто нет, нужно что-то в этот файл писать. Чтобы выйти из ситуации воспользуемся значением nul (это даже не нулевое значение, а его отсутствие)
Также, как и в примере с папкой, можно сделать именем текущую дату
Автоматическая очистка папки из батника
Теперь, что касается удаления. Тоже достаточно часто используемая область работы для батников. Так, например, без помощи спец.программ можно при каждом запуске (опять же, поместив пакетный файл в автозагрузку) очищать temp на вашей машине. Содержимое будет следующим
Строчкой cd «C:\Windows\Temp\» мы переходим в папку temp
Строкой echo Y|del *.* удаляем содержимое этой папки (не саму папку!)
Часть пятая. Прочие возможности bat-файлов
Возможностей, на самом деле, огромное множество. Здесь для примера рассмотрим некоторые из них.
/S заставит батник показать содержимое не только каталога, но и всех подкаталогов.
c:\ поможет отобразить содержимое не того каталога, откуда запускается бат-файл, а нужного нам.
X:\file.txt сохранит конечный файл со списком содержимого в указанное нами место;
Запуск файлов из командной строки
Очень часто полезным оказывается возможность запуска объектов из командной строки (в данном случае уже из бат-файлов). Причем как программ, так и других видов файлов (графических изображений, медиафайлов, текстовых документов и т.п.)
К примеру, если в автозагрузку добавить текстовый документ, то при включении ПК после загрузки системы вы его сразу увидите. Либо откроется плеер и будет проигрывать соответствующий трек. (Подробнее про способы добавления файлов в автозагрузку вы можете прочитать в статье: Автозагрузка. Добавление приложений в автозагрузку Windows)
Для того, чтобы это реализовать, нужно просто в теле бат-файла прописать точный путь до необходимого объекта. Например
Для системных же программ нужно указать лишь её обозначение.
При выполнении этого батника откроется калькулятор. В данном случае строчку chcp 1251 можно опустить (как и в некоторых ситуациях из примеров выше), однако если уж стандартизировать все наши пакетный файлы, то её можно и оставить, вреда не будет.
Часть шестая. Хитрости или шутки в сторону
Здесь рассмотрим ещё несколько интересных возможностей для применения батников. Из названия ясно, что некоторые из действий могут навредить системе (хотя это можно сделать и «голыми руками»), но если делать всё с умом, то может выйти достаточно интересно.
Шпионские штучки. Похищаем содержимое флешки
В самом начале статьи было указанно, что команды в батниках выполняются последовательно, если это не оговорено в самом теле исполнительного файла. Рассмотрим именно этот частный случай. Нуууу, допустим. Вы знаете, что к вам придёт знакомый (а может, знакомая) с просьбой произвести какие-то манипуляции с его/её флэш-карточкой, и вам очень хотелось бы слить все данные с этого накопителя на ваш ПК. Но делать это при госте не совсем удобно, да и просто можно получить «красную карточку». Что мы в таком случае делаем? Создаём батник следующего содержания
Создаём на этот бат-файл ярлычок, в свойствах ярлыка указываем, чтобы файл запускался в свёрнутом состоянии. Дважды кликаем по ярлыку. Что имеем.
:test обозначает начало действия батника
if exist g:\ goto go проверяет наличие в компьютере диска G:\, если он есть, то переходим к части :go (суть в том, что обычно вставленная флешка получает для обозначения первую свободную в системе букву латинского алфавита, проследить это на своём компе не так уж сложно. Вот именно эту буковку мы и указываем вместо G:\)
goto test если диск G:\ не был найден, возвращаемся к началу части :test
:go обозначает начало действия второй части батника
xcopy «G:\*.*» «C:\упс\*.*» копирует всё содержимое диска G:\ в папку упс на диске C:\
Т.е. после того, как мы запустили файл с ярлыка, он запускается в свёрнутом состоянии и циклически проверяет наличие флешки в ПК. Как только флешка там засветится, начнётся копирование всех данных с неё в указанную папку, причем привычного окна копирования файлов не выскочит, всё будет отображаться в свёрнутом окне терминала.Ну, всё что было описанно выше, полезно на своём компе, однако есть несколько плюшек, с помощью которых можно подшутить над другом/подругой.
Маленький вирус в автозагрузку
В общем виде всё будет выглядеть так: отправляем человечку файлик любым удобным способом, он запускает его на своём ПК, мы немного смеёмся, а потом говорим человечку, в чём соль и как всё исправить.Обычно, если что-то идёт не так, рядовой юзер первым делом перезагружает комп. Чтобы наш батник продолжал действовать и после рестарта, необходимо добавить его в автозагрузку (подчеркиваю, такие шутки проходят только с не самыми прошаренными пользователями ПК, более опытные, скорее всего, запросто найдут причину метаморфоз системы и легко избавятся от неё). Для этого в батничке пропише следующее
Первая строка добавляет файл в автозагрузку для всех пользователей на Windows XP (для конкретного пользователя в качестве пути указываем %USERPROFILE%\»Главное меню»\Программы\Автозагрузка\)
Вторая строка добавляет файл в автозагрузку для Windows 7.
Начало обеих строк в виде copy %0 означает копирование «самого себя».
Это сделали. Ещё нам хотелось бы, чтобы после запуска батника и при каждой загрузке ПК появлялась весёленькая надпись, к примеру, «ТЫ ЛАМЕР!»
Для этого добавляем следующее
Эта часть основанна на скриптах. Подробно расписывать не буду, кому интересно, найдёт материал в сети. Скажу лишь, что для некоторых ОС вид этого блока может слегка отличаться. Так, например, в семёрке (Win7) скрипт может выглядеть следующим образом
Однако, и первый вариант будет работать.
Также окошко с текстом можно добавить в обход скриптов, оно будет, так сказать, стилизованное, виндовое от текущего пользователя с указанием текущей даты и времени
Едем дальше, ближе к вкусностям.
Чтобы наш объект экспериментов растерялся ещё больше, в тело батника по желанию добавляем что-нибудь из следующего:
Команда rundll32 keyboard, disable отключит клавиатуру вплоть до следующей перезагрузки, а rundll32 mouse, disable то же самое проделает с мышью. Если батник в автозагрузке, то при рестарте это дело, разумеется, повторится.
Ну и del «%SystemRoot%Cursors*.*» >nul удалит курсоры мыши ( пользоваться с осторожностью и в самых крайних случаях! )
Теперь остаётся только скомпоновать желаемые строки в единый код
Часть седьмая. Упаковка исполнительного файла
Здесь хочу отметить, что мало кто станет запускать ваш батник хотя бы потому, что он имеет немного подозрительный вид. Исправить это можно двумя способами:
Программный способ упаковки батников
Упаковка батников в SFX-архив
Т.е. когда дело дойдёт до этой команды, система переключится на исполнение файла с названием sled.bat, а затем вернётся к исходному.
Если же надо, чтобы работа первого батника не прерывалась, то используем другую команду
Вместо заключения
Будьте осторожны и удачных вам экспериментов
Пакетные BAT файлы
Описание
Пакетные файлы (иногда называемые bat, бат, batch, батник, батники) это обычные текстовые файлы, содержащие наборы команд интерпретатора и имеющие расширение *.bat. Редактировать такие файлы можно при помощи блокнота или любого другого текстового редактора, которым вы привыкли пользоваться. Они содержат последовательный набор команд, которые выполняются в определенном, заранее заданном, порядке. Для рядового пользователя знание принципов работы BAT файлов совершенно необязательно и редко когда требуется, но при выполнении каких-либо специализированных задач, использование пакетных файлов может очень сильно упростить жизнь и ускорить их выполнение.
Примеры bat файлов
Безопасно ли запускать bat файлы?
Как создать bat файл?
Для начала создадим папку test в корне диска C:\, чтобы в ней проводить наши эксперименты. Далее откройте блокнот (или любимый текстовый редактор) и наберите две следующих строки:
Пример заполнения файла
Все, наш первый bat файл создан и лежит по адресу C:\test\start.bat. Теперь нам осталось этот файл запустить и увидеть результаты его работы.
Как запустить bat файл?
В нашем примере, мы переходим в папку test на диске C:\ и запускаем файл start.bat, который мы ранее написали.
После его выполнения на экран будет выведено две строки, как на скриншоте ниже:
результат выполнения файла start.bat
После нажатия любой клавиши окно закроется, т.к. bat-файл выполнен.
Обратите внимание, что символ собаки перед каждой командой в bat-файле указывает на то, что саму команду выводить на экран не надо, а нужно вывести только результат ее работы. Чтобы поэкспериментировать удалите символ собаки из начала каждой строки, сохраните и запустите полученный bat файл.
Команды, используемые в bat файлах
Список команд, которые можно использовать в bat-файлах, можно просмотреть, введя в командной строке команду help
В результате будет выведен список доступных команд и краткое описание к этим командам.
В результате, на экран будет выведена справка по команде COPY и доступные ключи.
Если рассматривать исполняемые приложения, то среди них особую роль будут играть пакетные файлы с расширением BAT. Возможности ОС позволяют выполнить запись некоторой последовательности команд непосредственно в документ данного типа. Таким образом, получается файл, содержащий наборы команд. Это позволяет упростить функционирование ОС. Предусматривается наличие некоторого списка команд, которые могут быть запущены исключительно из пакетного документа.
Обеспечивается способность выполнения довольно сложных и многоуровневых последовательностей управления процессами. Наиболее значимым качеством пакетных документов требуется отметить автоматизацию работы над заданиями. Деятельность происходит без каких-либо вмешательств со стороны пользователей системы. Разрешается выполнение файлов BAT почти на всех этапах установки ОС Windows.
Допускается помещение внутрь пакетных документов всех существующих команд. Предполагается усложнение поставленных задач и даже создание условий. В этом деле оказывают поддержку команды goto, if и for. Требуется отметить autoexec.bat – файл необходим при осуществлении начальных настроек ОС в ходе запуска.
Следует рассмотреть простейший пример самостоятельного создания пакетного файла. Для выполнения поставленной задачи будет достаточно открыть новый документ с расширением TXT и ввести туда предложенный текст:
title Batch File Testing
echo Hello World
echo.
echo Starting Notepad
start notepad
echo.
echo Starting Wordpad
start Wordpad
echo.
pause
exit
После этого осуществляется сохранение документа и установка для него любого названия. Основным моментом требуется предусмотреть задание расширения CMD или BAT. После этого требуется выполнить запуск. Происходит назначение окна с названием «Batch File Testing». Работа указанного документа будет заключаться в том, чтобы открыть блокнот и выполнить запрос на нажатие любой клавиши. Когда это сделано, окно закроется.
Пакетные файлы применяются постоянно и сильно упрощают жизнь при осуществлении повседневных задач для программистов. Наиболее распространенными сферами использования BAT документов можно отметить резервное копирование данных, переименование, удаление файлов или документов, а также многое другое. Большинство действий в системе разрешается проводить только в том случае, если имеются администраторские права. Подобный фактор требуется принимать во внимание.
Задание паузы в файле BAT перед исполнением последующей команды
Разрешается осуществление паузы в результате применения большого числа команд. Часть из них предусматривают подобную функцию. Ниже будет рассмотрено выполнение поставленной задачи за счет команды ping:
Следует перечислить и расшифровать параметры:
Запрос будет исполняться только один раз
w 50000
Для ожидания ответа выбран интервал в 50.000 мс (50 секунд)
123.123.123.254
В качестве этого параметра прописывается IP адрес, которого точно не существует внутри локальной сети. Это позволяет утверждать о невозможности ответа на запрос
Производится перенаправление для выдачи в несуществующее место
Зацикливание в файле BAT выполнения команды
Довольно распространенной задачей требуется отметить периодический вызов некоторой команды через равные промежутки времени. Подобные мероприятия особенно часто нужны в случае обновления некоторых программ или системы. Оптимальным решением поставленной задачи является создание зацикленного в файла BAT с некоторой паузой. Ниже рассмотрен пример реализации такого способа:
:loop
start notepad.exe
goto loop
Происходит открытие блокнота каждую минуту.
Создание папки, имя которой устанавливается текущей датой
Папки данного вида популярны в качестве мест сохранения бэкапов. Необходимо рассмотреть основные методы создания.
MD %SYSTEMDRIVE%\%date:
Применение команды позволит создать новую папку и присвоить её название, соответствующее текущей дате. Недостатком указанного подхода считается невозможность получения результата в определённых ситуациях. Сюда можно отнести неподходящие установки отображения даты на компьютере или специфические региональные настройки. Чтобы подобные факторы не оказали своего влияния, применяется следующий вид:
md %systemdrive%\%date:
md %systemdrive%\%date:
Стоит предложить вариант по дальнейшему улучшению результата. Например, осуществление прибавления к названию документов текущей даты:
@echo off
for /F «tokens=1-4 usebackq delims=. » %%1 in (`date /t`) do set mydate=%%4.%%3.%%2
ren test.txt test%mydate%.txt
Это позволит изменить название документа с test.txt на test(гггг.мм.дд).txt
Запрет повторного запуска программ
Когда запуск определенной программы происходит с применением файла BAT, имеется возможность не допускать повторного исполнения такой процедуры.
if %errorlevel%==1 start «» «приложение«
Здесь упоминается специальная программа pslist. Она является бесплатной и может быть свободно загружена из интернета.
Выполнение резервных копий в автоматическом режиме
Ниже будет представлен скрипт, который отвечает за создание архивных копий документов с данными пользователей, а также некоторыми другими документами. Не предусматривается проведение подобных мероприятий с медиа файлами. Причиной является их значительный объем. Дополнительно, их потеря редко считается критичной.
rem задаём жесткий диск, где лежат папки для архивирования и винт куда будем бэкапить
SET DRIVE1ST=d:
SET DRIVE2ND=e:
rem пароль на архив
SET PASSWD=qmsdhgsdfgsdfhdsfhsdhf
rem если копировать для надёжности куда-нибудь на сетку
rem SET COPYTO=\\shpakk\c$\!backup
rem *** Проверим путь назначения архива
%DRIVE1ST%
if not exist \!backup md \!backup
if not exist \!backup\Departments md \!backup\Departments
if not exist \!backup\Exchange md \!backup\Exchange
if not exist \!backup\MEDEA_rdisk md \!backup\MEDEA_rdisk
cd \!backup
rem *** Backup \\SERVER\e$\Exchange
SET DIRNAME=Exchange
SET FILENAME=SERVER_Exchange
SET SOURCEDIR=e:\Exchange
if not exist %DIRNAME%\%FILENAME%_new.rar goto next2
del %DIRNAME%\%FILENAME%_old.rar
ren %DIRNAME%\%FILENAME%.rar %FILENAME%_old.rar
ren %DIRNAME%\%FILENAME%_new.rar %FILENAME%.rar
copy %DIRNAME%\%FILENAME%.rar %COPYTO%\%DIRNAME%
:next2
rem *** Backup \\SERVER\e$\Users
SET DIRNAME=Departments
SET FILENAME=SERVER_Departments
SET SOURCEDIR=e:\Departments
if not exist %DIRNAME%\%FILENAME%_new.rar goto next3
del %DIRNAME%\%FILENAME%_old.rar
ren %DIRNAME%\%FILENAME%_4.rar %FILENAME%_old.rar
ren %DIRNAME%\%FILENAME%_3.rar %FILENAME%_4.rar
ren %DIRNAME%\%FILENAME%_2.rar %FILENAME%_3.rar
ren %DIRNAME%\%FILENAME%_new.rar %FILENAME%_2.rar
:next3
rem архивирование пошло, не берём мультимедиа файлы
goto next4
:next4
rem *** Create repair disk on \\SERVER
SET DIRNAME=MEDEA_rdisk
SET FILENAME=MEDEA_rdisk
SET SOURCEDIR=%windir%\repair
%windir%\system32\rdisk.exe /s-
if not exist %DIRNAME%\%FILENAME%_new.rar goto next5
del %DIRNAME%\%FILENAME%_old.rar
ren %DIRNAME%\%FILENAME%.rar %FILENAME%_old.rar
ren %DIRNAME%\%FILENAME%_new.rar %FILENAME%.rar
copy %DIRNAME%\%FILENAME%.rar %COPYTO%\%DIRNAME%
:next5
В итоге имеем 3 папки: Departments, в ней:
SERVER_Exchange_old.rar ну и систему на всякий в папке
Использование комментариев в файлах BAT
Чтобы разбираться в том, что именно осуществляет заданный BAT документ, рекомендуется применять комментарии. Использование их для главных блоков особенно важно в случае значительного объема текстовой информации. Просматривая файл через некоторое время, у Вас не возникнет проблем с пониманием особенностей его работы.
Написание комментариев можно осуществить несколькими способами. Когда приходится иметь дело с довольно большим количеством текста, рекомендуется следующий подход:
goto start
Этот пакетный файл предназначен
для автоматизации рутинных операций,
выполняемых ночью для синхронизации
содержимого корпоративного ftp-сервера
с ftp-серверами филиалов
Пакетный файл написан 01/01/2016
Последнее исправление внесено 10/02/2016
:start
Подобный вариант обеспечивает запуск пакетного документа, после чего выполняется переход контроля непосредственно команде, которая помещается после start. В некоторых ситуациях будет выгодным использовать иной подход. Например, хорошо подходит применение команды rem или два двоеточия. Они оптимально подходят для небольших по своему размеру комментариев с длиной в одну строчку.
rem Комментарий
:: Комментарий
Если Вы хотите обеспечить для себя удобство последующего разбора своих записей, рекомендуется не забывать про возможности комментирования. Не стоит описывать каждый шаг, но основные блоки должны иметь информацию о себе. Комментарии считаются правилом хорошего тона в программировании.
Ожидание появления заданного документа в файле BAT
В некоторых ситуациях возникает потребность осуществить заданные действия при возникновении определенного файла. Осуществление такой задачи в пакетном документе предусматривается следующий подход:
:test
if exist c:\1.txt goto go
goto test
start notepad.exe
Приведенный текст задает необходимость выполнения проверки каждые 20 секунд того, существует ли в корне диска С документа с названием 1.txt. Если подобное событие произойдет, выполняются действия после goto. В конкретной ситуации производится запуск программы блокнота, но можно использовать любые другие варианты.
Периодически возникает ситуация, когда искомый файл обладает крупным объемом и проводится его копирование. Таким образом, поиск выдаст результат, но какие-либо действия повлекут за собой появление ошибки. Чтобы этого не возникло, нужно несколько улучшить содержимое пакетного файла.
:test
if exist c:\1.txt goto go
goto test
rename c:\1.txt 1.txt
if not %errorlevel% == 0 goto go
del c:\1.txt
Как и раньше, попытка каких-либо действий с не полностью скопированным документом вызовет ошибку, но она не приведет к завершению. Произойдет повторение цикла и так до тех пор, пока ошибка не исчезнет.
Способы обхода процедуры проверки даты из файла BAT
Некоторые программы в процессе своей работы осуществляют проверку текущей даты. В большинстве случаев это создано для контроля временных рамок использования. Достаточно часто владелец устанавливает возможность бесплатной эксплуатации на протяжении установленного периода времени. Когда сроки истекают, расширенный или даже весь функционал программы перестает работать. Другой вариант – это регулярное обновление до последней версии.
Если Вы не хотите, чтобы программа использовала временную проверку, можно изменить свои настройки даты и времени. Этот вариант нельзя назвать приемлемым по многим причинам. Более эффективным подходом требуется назвать использование пакетного файла со специально прописанной информацией. Предполагается запуск приложения и последующий возврат даты к тому значению, что присутствовало ранее.
set tempdate=%date:
date 01-01-04
start notepad.exe
date %tempdate%
Что именно делают прописанные строки? Прежде всего, производится сохранение текущей даты в системе. Для этого применяется особая переменная. Во второй строке происходит установка системной даты на новое значение. В данном случае, это 1 января 2004 года. Сразу после этого предполагается проведение вызова программы, отвечающей за проверку системной даты. Мы использовали блокнот, но в Вашем случае требуется предусмотреть подобный момент. Пока Блокнот является открытым, пакетный документ ожидает, а сама дата не предусматривает изменение обратно. После закрытия Блокнота происходит возврат системной даты из переменной.
Важно уделить внимание определенному моменту. Когда в пути до конкретного документа используются символы из кириллицы, рекомендуется применять текстовый редактор с поддержкой кодировки 866 (ОЕМ, русская) или аналогичного варианта. Когда это не предусматривается, происходит выдача ошибки и работа пакетного файла не осуществляется.
Большинство программ упрощают систему проверки – она выполняется исключительно в процессе запуска. Это позволяет модифицировать пакетный документ в соответствии с подобными запросами.
set tempdate=%date:
date 01-01-04
start notepad.exe
date %tempdate%
Процесс работы довольно прост. В первую очередь выполняется изменение системной даты и последующий запуск программы. Пакетный документ не станет ждать, пока она завершит своё функционирование и осуществит возврат даты на прежнее значение.
Импорт переменных реестра из пакетного файла
Когда возникает потребность выполнения импорта в реестр определенных переменных, осуществление поставленной задачи предполагает использование следующей команды:
Производится импорт в реестр сведений из документа environment.reg. Поскольку применяется специальный ключ –s, то не предусматривается вывода сообщений для подтверждения таких действий.
Экспорт переменных реестра из пакетного файла
В некоторых случаях поставлена задача, противоположная рассмотренной в предыдущем абзаце. Чтобы сохранить в пакетном файле некоторую часть реестра с полным перечнем параметров, необходимо использовать следующий подход:
Происходит сохранение ветки HKEY_CURRENT_USER\Environment в документ, расположенный по адресу C:\environment.reg. При запросе на восстановление значений HKEY_CURRENT_USER\Environment, предполагается необходимым только выполнить запуск environment.reg. Примером использования такой команды следует назвать осуществление регулярного бэкапа настроек ПО или всей системы. Подобная информация находится в реестре и может быть выгружена оттуда. Полный адрес может включать в себя проблемы. Чтобы они не вызвали ошибку, надо позаботиться о заключении подобного пути в кавычки.
Применение внутри пакетного файла символа %
Символ процента относится к категории спецсимволов. Если требуется применить его внутри пакетного документа, то следует прописывать дважды.
echo 50%%
Если ввести указанную команду, то предполагается выдача на экран в BAT документе 50%. Без использования двойного символа %%, результатом станет только число 50.
Смена имен по маске из файла 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%\%%
Определение имени компьютера из пакетного файла
Непосредственно из файла BAT можно узнать название компьютера. Для этого необходимо прописать в документе
hostname
Команда предусматривает возврат имени устройства, на котором произошел её запуск.
Изменение IP адреса устройства из пакетного файла
Чтобы изменить IP адрес компьютера, следует применять команду netsh. Начать подобные мероприятия можно только после того, как станет определены текущие настройки. Требуется получить IP адрес на данный момент:
netsh interface ip show address
Происходит выдача текущей конфигурации. Нам необходимо узнать название применяемого интерфейса. В качестве примера это может быть FASTNET. Далее будет предполагаться необходимость изменения IP адреса на 172.22.0.33 (шлюз 172.22.0.1, маска 255.255.255.0). Предусматривается следующая строка в пакетном файле для выполнения поставленной задачи:
netsh interface ip set address name=»FASTNET» static 172.22.0.33 255.255.255.0 172.22.0.1 1
Обработка команды повлечет изменение IP адреса у интерфейса FASTNET на 172.22.0.33. Это и является искомой задачей. Указанная команда предлагает весьма широкие возможности в плане работы с сетевыми настройками.
Автоматизация удаления документов по типу
Задача очистки жесткого диска от временных файлов может быть решена с помощью следующей строки:
del /f /s /q C:\*.tmp
Следует разъяснить используемые параметры
Происходит удаление всех документов, даже при наличии у них атрибута «только чтение»
Выполняется удаление файлов из всех подкаталогов.
Не всплывает окна, просящего подтверждения действиям удаления.
Прописывается диск, для которого будет производиться удаление документов. В данном случае, разрешается указывать более конкретный путь, например, до некоторой папки.
Тип удаляемых документов.
Следует аккуратно использовать параметр /q. С ним удаление будет происходить без каких-либо запросов и это может привести к весьма неприятным последствиям.
Отправка сообщения непосредственно из файла BAT
Следует рассмотреть ситуации, когда осуществляется работа пакетного файла на одном из устройств в сети. В подобной ситуации будет особенно удобным, когда после завершения установленных мероприятий произойдет пересылка соответствующего сообщения для администратора. Это довольно просто сделать с применением следующей строки:
net send name Message text
Здесь параметр name означает название некоторого устройства, куда будет отправлено сообщение. В качестве самого сообщения следует прописать информацию Message text. Важно учитывать применяемый алфавит. Когда осуществляется работа с кириллицей, нужно применять кодировку MS-DOS (866 кодовая страница) или любую аналогичную ей. В ином случае, следует приготовиться к выдаче набора ничего не значащих символов. Таким образом, рекомендуется применять соответствующие типы текстовых редакторов.
В качестве примера подобной программы можно отметить FAR. Следует выполнить открытие пакетного документа через этот текстовый редактор за счет нажатия клавиши F4 или выбора соответствующего пункта. Указывается кодировка DOS – она исключает проблему невозможности распознания символов системой.
Запуск BAT файла из другого BAT документа
Чаще будет проще использовать возможность запуска из одного BAT файла другого, чем прописывание дополнительных строк действий. Для этого могут предусматриваться и более серьёзные рекомендации, чем удобство пользователя. Например, при необходимости приостановить осуществление основного пакетного документа во время выполнения другого или задать их параллельную деятельность.
Следует рассмотреть подобный момент более подробно. Выполним создание пакетного файла 1.bat, который будет включать следующее содержимое:
call 2.bat
То есть, происходит вызов второго пакетного файла 2.bat, где пропишем одну команду:
pause
Посмотрим, что произойдет при запуске 1.bat. Если это сделать, то на экран выдастся сообщение с предложением нажатия любой клавиши. Когда это будет сделано, произойдет закрытие окна. Из этого можно сделать довольно простой вывод. Когда один пакетный файл вызывается из другого с применением call, предусматривается остановка его исполнения до той поры, пока выполнение второго не будет завершено.
Стоит рассказать об иной ситуации, которая предусматривает необходимость параллельного выполнения пакетных документов. Подобный запрос возникает довольно часто и для его реализации можно использовать команду start, как оптимальный вариант в сложившихся условиях. Вернемся к созданным документам и в 1.bat введем некоторые корректировки:
Теперь предполагается открытие окна с предложением нажать любую кнопку при запуске 1.bat. При этом, окно главного пакетного документа закроется после выполнения своей задачи. Теперь Вы понимаете особенности применения команд start и call. Следует отметить тот факт, что они используются не только для того, чтобы запускать пакетные файлы. Команды вполне способны осуществить начало работы любого приложения или документа.
Отключение выдачи на экран команд в процессе осуществления пакетного файла
Когда в пакетном файле выполняются различные команды, предусматривается выдача результата работы на экран. Далеко не всегда имеется запрос в подобных действиях и требуется осуществить исполнение с отключенным выводом. Для этого следует применять символ @, который прописывается перед самой командой.
Требуется рассмотреть это на примере. Допустим, в пакетном файле имеется строка
echo Testing
На экран предусматривается выдача echo Testing, а потом результат деятельности команды – слово Testing. Можно написать внутри пакетного документа следующие сведения:
@echo Testing
Результатом работы станет только выдача слова Testing. Можно пойти ещё дальше и установить работу таким образом, чтобы отключился вывод команд на протяжении всего файла BAT. В таком случае, требуется задать
@echo off
Автоматический ответ на запросы о подтверждении
При работе некоторых команд может возникнуть ситуация, когда они должны совершить потенциально опасное действие в системе. В качестве примера рекомендуется назвать format или del. Подобный момент предусмотрен и выдается соответствующее предупреждение. Когда производится выполнение внутри пакетного файла, то его деятельность остановится. Она будет возобновлена только после подтверждения и это способно стать причиной потери драгоценного времени.
Существует способ осуществления задачи автоматизации. Предполагается использование перенаправления необходимого ответа в команду. Далее будет на примере рассмотрено подобное действие. Требуется создать на диске С обычную папку Folder и внутрь неё осуществим помещение любых 2х документов.
Запускаем интерпретатор команд и вводим в нем
del C:\Folder
Это предполагает необходимость осуществить удаление вместе со всеми файлами внутри. Поскольку подобное действие относится к числу потенциально опасных, поступит запрос на подтверждение следующего вида:
Команда не станет продолжаться до тех пор, пока пользователь не ответит. Если работа производится в автономном режиме, ожидание может быть крайне длительным, а сам процесс останется невыполненным. Для выхода из сложившейся ситуации рекомендуется применение специального символа (|). Он предусматривает, что должна произойти передача следующей сразу после команде. Теперь модифицируем строку в пакетном файле:
echo Y|del C:\Folder
На экран происходит выдача подтверждения с уже положительным решением. Таким образом, из указанной папки произойдет удаление всех документов. Следует аккуратно использовать подобную возможность.
Перенаправление результата выполнения команды в документ
В случае деятельности BAT файлов сложного типа способны возникнуть проблемы в плане того, насколько правильно функционирует система. Именно по этой причине применяется специальное средство – запись в специальный лог-файл. Это предусматривает возможность ознакомиться с документом в дальнейшем и провести анализ того, насколько правильно осуществлялось выполнение поставленных задач.
Чтобы выполнить перенаправление результата работы в специально предназначенный для этого документ, требуется создать файл BAT со следующими строками:
echo Create test.txt
echo Copy Test.txt to Old_test.txt
copy C:\test.txt C:\Old_test.txt
Необходимо подробнее разобрать, что именно выполняет указанный набор команд.
Первой строкой задается отключение вывода команд. Это позволит получить в лог-документе исключительно результаты осуществления.
Второй строкой указывается время, когда начал исполняться пакетный файл.
Третьей строкой указывается на то, что следующей командой будет создаваться текстовый документ test.txt.
Четвертая строка предназначена для того, чтобы непосредственно осуществить поставленную задачу. Следующим этапом производится запись в него одного слова – test.
Пятая строка проводит выдачу в лог-документ пояснение о том, что следующим этапом станет происходить копирование в иное место.
В шестой строке осуществляется непосредственное копирование C:\test.txt в файл C:\Old_test.txt. Можно говорить о том, что происходит создание копии документа, но с присвоением для него нового названия.
В заключительной строке указывается команда, которая предусматривается для указания времени действия пакетного документа. Аналогичные сведения можно получить в лог-файле.
Требуется рассмотреть дальнейшие возможности по модификации предложенного набора команд. Часто возникает запрос на выполнение хранения подобных документов в специально предназначенной для них папке. Каждый день должна производиться запись отчета с присвоением для него нового названия. Оптимальный вариант – это использование имени, состоящего из некоторого слова и автоматически добавляемой к нему текущей даты. Сам файл можно назвать 1.bat и сохранить.
Теперь создадим на диске папку LOG и полный путь к ней станет иметь указанный вид: C:\LOG. Следующим этапом происходит запуск команду установленного типа:
Когда в расположении документа предусматриваются пробелы, рекомендуется предусмотреть указанный момент и применять кавычки или специальный формат записи. Ниже указано два возможных варианта:
«C:\Program Files\1.bat»>C:\LOG\%date
Предполагается, что сразу после начала работы 1.bat в папке C:\LOG произойдет создание документа с названием, которое включает текущую дату. Именно указанный файл и требуется установить в качестве отчета о деятельности пакетного файла 1.bat. Если запустить рассмотренный BAT файл, то предполагается предоставление указанного далее результата:
Copy Test.txt to Old_test.txt
Скопировано файлов: 1.
Чтобы произвести перенаправление результатов работы bat-документа в лог-документа, следует применять специальный символ (>). Написание команды будет иметь представленный ниже вид:
Путь\ИмяФайла.bat>Путь\ИмяЛогФайла.txt
Некоторые вопросы касаются расширения, которое должно даваться лог-файлу. Оно может быть любым, в том числе являться страницей html. Последний вариант особенно удобен в том случае, когда выгрузка значений должна происходить на какой-либо сайт.
Создание папки из BAT файла
Чтобы выполнить поставленную задачу, предполагается несколько доступных вариантов действий. Наиболее простой способ включает в себя применение команды MKDIR или специального сокращенного аналога – MD. Предполагается написание указанной ниже строки в документе:
MD FolderName
Когда такая команда будет осуществлена, предполагается образование новой папки FolderName. Она помещается туда же, где располагается файл BAT. Вовсе не обязательно обеспечивать подобную привязку. Допускается создавать папку в любом указанном пользователем месте, что и внесено в следующую команду:
MD D:\FolderName
Разрешается применять системы переменных в тех случаях, когда выполняется создание папок. Пример заключается в следующем – требуется создать папку в корне жесткого диска D с названием в виде имени текущего юзера. Задается вот так:
MD D:\%USERNAME%
Дальнейшее усложнение команды предписывает создание папки с именем юзера на системном диске устройства:
MD %SYSTEMDRIVE%\%USERNAME%
Ниже рассматривается вариант, когда в качестве названия для папки применяется дата на момент выполнения пакетного файла.
set datetemp=%date:
MD %SYSTEMDRIVE%\%datetemp%
Нужно выполнить рассмотрение того, каким именно образом происходит функционирование набора команд. Первой строкой создается специальная переменная datetemp. Когда работы завершатся, она удаляется, но до этого момента играет важную роль. Предусматривается корректировка значения переменной на протяжении всего времени её существования. В строке осуществляется присвоение значения, представляющего собой десять символов с правой части от системной переменной DATE. Используется формат представленного типа: Дн ДД.ММ.ГГГГ. Сначала слева идет указание недель и оно не представляет интереса. При создании папок открывается большое количество путей, которыми разрешается следовать. Это открывает большие возможности перед пользователями. Если Вы хотите увидеть перечень всех переменных, следует применить команду SET.
Создание документа с произвольным названием из BAT файла
Чтобы можно было создать документ в ходе осуществления пакетного файла, нужно написать специальный символ, отвечающий за перенаправление: (>). Предполагается перенаправление потока с экрана на документ. Рекомендуется использование указанного способа:
@echo Start file>C:\1.txt
Исполнение команды создает текстовый документ, обладающий строкой Start file. В ходе создания документа станет возможным применение в качестве части или всего его названия значений некоторых переменных. Схожие моменты уже рассматривались ранее. В качестве примера требуется отметить создание файла с названием, соответствующим дате его запуска.
set datetemp=%date:
Работа начинается с того, что создается некоторая переменная, которая получает название datetemp. Для неё производится задание десятка символов с правой части системной переменной DATE. Это позволяет обеспечить применение исключительно действующих дат. Во второй строке указывается перенаправление (.) в документ. Его название получается за счет использования значения переменной datetemp. Должно быть указано TXT расширение, поскольку требуется получить текстовый документ.
Когда происходит работа в сети и пользователь с правами администратора реализует сбор сведений, рекомендуется добавлять название главного устройства. Это позволит упростить задачу дальнейших проверок. Требуется использование команды:
Происходит создание на диске С документа TXT, обладающего названием, состоящим из имени устройства выполнения пакетного файла. Допускается модернизировать предложенные строчки путем внесения различных переменных.
Процесс автоматизации запуска файлов BAT
Ряд процессов требует осуществления задачи запуска документов BAT без привлечения к подобному процессу внимания со стороны пользователя. Автоматическая деятельность системы вполне может быть прописана. Такой подход используется довольно часто. Классический планировщик из инструментов операционной системы вполне способен помочь в выполнении начала работы пакетных файлов по расписанию. Таким образом, происходит запуск в точно установленное юзером время или через некоторые интервалы.
Помимо стандартного планировщика можно найти огромное количество специализированных программ. Значительная часть из них являются свободно доступными. В платных версиях предусматривается использование расширенных возможностей.
Ещё одним вариантом можно назвать автоматический запуск некоторых действий каждый раз при входе пользователем в учетную запись или включении устройства. Ранее уже рассматривались основные направления деятельности и способы задания команд для подобных ситуаций.
Применяемые в документах BAT команды
Как уже упоминалось, допускается использовать все команды, некоторые из них предназначаются специально для работы в пакетных файлах. Можно ознакомиться с полным перечнем. Для этого предполагается получить доступ к командной строке. Это можно сделать через Пуск > Выполнить > CMD.
Предусматривается несколько вариантов получения сведений:
help
Если осуществить ввод указанной команды, можно получить полный список существующих команд и небольшие описания к ним. Разрешается обеспечение более детальных сведений. Чтобы можно было их получить, требуется ввести help и название интересующей команды. В качестве примера рекомендуется указать возможность получения данных по АТ:
help AT
Результатом необходимо назвать выдачу перечня ключей для осуществления запуска указанной команды из пакетного документа. В данном плане Windows предоставляет гораздо более широкие возможности, чем DOS. Одним из примеров расширенного функционала требуется назвать открытие файла логов деятельности пакетного доку
start название_документа.txt
Если осуществить запуск подобной команды, то произойдет открытие название_документа.txt. Важным моментом является тот факт, что пакетный файл окончит свою деятельность. Использование подобного метода является оправданным в тех случаях, когда объемы лог-файла невелики.
Создание BATCH файла
Следует открыть программу «Блокнот» и в ней провести набор указанных далее строк:
@echo This batch file
@pause
После этого требуется выполнить сохранение в качестве файла 1.bat. Следующим этапом таких мероприятий, следует провести открытие пакетного документа. Это повлечет за собой выдачу строк:
This batch file
Нажмите любую клавишу для продолжения.