вторник, 31 января 2012 г.

Написание bat файлов


В данной статейки мы рассмотрим такую полезную вещь как Батник. Давайте сначала дадим определение, что такое bat файл. Пакетные или batch файлы это простые текстовые файлы, содержащие наборы команд  (инструкцию) интерпретатора и имеющие расширение bat или cmd (cmd работают только в ОС семейства NT). Создавать и редактировать такие файлы можно при помощи обычного блокнота или любого другого текстового редактора.

Теперь вы спросите, зачем нужно уметь писать такие бат файлы? И зачем они нужны? Попытаюсь объяснить. Во-первых,  они используются для облегчения работы т.е. например вам нужно постоянно выполнять какую-нибудь операцию каждый день (например, создавать архив тех или иных документов) с помощью батника это можно автоматизировать, и вы в этом уже не будите принимать участия. Во-вторых, эти пакетные файлы очень мощные (если конечно уметь их писать) т.е. вы можете даже написать неплохую программу (я имею ввиду по функционалу). Лично мне они очень помогают в работе, и о некоторых вещах  я уже просто забыл, когда это делал я в ручную.
Теперь перейдем непосредственно к основам этих батников. Как же они создаются, вам нужно просто создать простой текстовый документ открыть его и сразу на вкладке «файл->сохранить как» вписать вместо расширения  «текстовый документ.txt» например «текстовый документ.bat» и сохранить, вот и получится у нас батник с расширением .bat но он пока ничего не делает.
Для начала я приведу пример батника который я использую у себя на работе для архивации документов.


"C:\Program Files\WinRAR\winrar.exe" a -r -dh -ed -agYYYY-mm-dd E:\arhaccounts\ d:\accounts\*.doc
"C:\Program Files\WinRAR\winrar.exe" a -r -dh -ed -agYYYY-mm-dd E:\arhaccounts\ d:\accounts\*.xls
"C:\Program Files\WinRAR\winrar.exe" a -r -dh -ed -agYYYY-mm-dd E:\arhaccounts\ d:\accounts\*.txt

Теперь немного расскажу, что делает этот батник. Запускается WinRar, потом идут команды винрара (a это добавить в архив), потом ключи винрара (-r обрабатывать вложенные папки, -dh  открывать совместно используемые файлы, -ed не добавлять пустые папки, далее идет добавление к имени архива текущею дату, YYYY-mm-dd формат даты), потом показан путь где будет лежать конечный архив, ну а потом путь и маска файлов какие нужно заархивировать, мы архивируем все документы word, Excel и текстовые файлы, остальные мы считаем незачем архивировать. У нас архивация идет на другой диск и мы еще копируем полученный архив на другой комп, для того чтобы архивы хранились и в другом кабинете. Копирование идет по сети соответственно комп на который копируется архив должен быть включен. Для этого можно использовать такую команду:
copy E:\arhaccounts\*.rar \\namecomp\arhiv\
Теперь рассмотрим основные команды, которые вы можете использовать.
Если вам нужно удалить файл пропишите следующие:

Del d:\file\test.doc

Для того чтобы удалить весь каталог пропишите:

rd d:\file\

Вдруг вам нужно удалять каждый раз все из какого-нибудь каталога то используйте вот что:

echo Y| del d:\file\

где  del d:\file\ это как раз и есть удаление всех файлов, а команда echo Y| подтверждает удаление т.к. если не прописать эту команду, то вы увидите сообщение о подтверждение удаления – Продолжить [Y(да)/N(нет)] и вам придется выбирать удалять или нет.
Сейчас давайте рассмотрим пример по сложней, в котором уже выполняется условие:

@echo off
"C:\Program Files\WinRAR\winrar.exe" x -O+ -IBCK d:\test\test.rar d:\test
IF not EXIST d:\test\123.rar GOTO 1
IF EXIST d:\test\123.rar GOTO 2
:2
"C:\Program Files\WinRAR\winrar.exe" x -O+ -IBCK  d:\test\123.rar c:\
del d:\test\123.rar
:1  
del d:\test\test.rar
end

Теперь объясняю, допустим, вам нужно разархивировать архив test.rar в котором будет много файлов, но если там окажется файл 123.rar его нужно будет разархивировать в корень диска C а остальные файлы чтобы остались в том же каталоге не тронутыми.
По порядку команда  @echo off  нужна для того чтобы на экране у нас ничего не отражалось (в принципе если не нужно можете не писать эту строку). Далее у нас запускается винрар и распаковывает архив test.rar в  папку test, потом идет условие, если в папке test (после распаковки test.rar) у нас не окажется файла 123.rar то у нас просто выполнение батника переходит к строке :1   и потом просто удаляется файл test.rar за не надобностью т.к. все что нам нужно мы уже распаковали. Но если там оказывается файл 123.rar то выполнение батника переходит к строке :2 после которой уже идет распаковка файла 123.rar в корень диска C. Другими словами у нас выполняется условие, если есть файл то делать это, если нет файла делать вот это. Допустим если не прописать условие в данном примере, то у нас батник выдаст ошибку, тогда когда у нас не окажется файла 123.rar в данной папке.  
А сейчас рассмотрим такой пример, допустим вам нужно каждый раз перемещать из каталога расположенного на диске D  файлы на флешку, вы каждый раз должны будите заходить мой компьютер диск D выбирать нужную папку выделять все файлы из нее и вырезать, а потом только заходить на флешку и вставлять, но с помощью батника это делается в один клик (с одним условием что флешка каждый раз будет, например диском G или тем какой у вас). Вот пример такого батника:

move "D:\catalog\*.doc" G:\catalognaflehe\

И все файлы с расширением doc которые находятся в каталоге D:\catalog будут перемещаться на флешку. Теперь хочу сказать что в батниках можно использовать сценарии (скрипты) при помощи Windows Scripting Host и если нужно например чтобы выводилось сообщение после того как файлы скопированы (предыдущий пример) вставьте вот это:
echo var WSHShell = WScript.CreateObject("WScript.Shell"); > %temp%\mes.js
echo WSHShell.Popup("Файлы Скопированы"); >> %temp%\mes.js
start %temp%\mes.js
deltree /y %temp%\mes.js

На самом деле про написание батников можно разговаривать много и в одну статью это, конечно же не уместить, здесь я показал всего лишь принципы которые используются при написание bat файлов так сказать основу. Если вы хотите узнать больше команд для написания батников вы можете легко посмотреть их в ведя в командной строке (Пуск - Выполнить – cmd) команду help, но там, конечно же не все команды, что можно использовать в батниках. Удачи в написание BAT файлов (батников). Сообщество программистов
-
Источник 

Комментариев нет:

Отправить комментарий