Сегодня мы узнаем про то, что такое bat файл и заодно создадим один из них.

Думаю, что многие, так или иначе, периодически создают резервные копии (так называемые backup -ы) тех или иных файлов и папок.

Вроде все привычно и делать ничего особо сложного не надо: вставить флешку, открыть " Мой компьютер ", найти что надо скопировать, выделить, тыкнуть мышкой, выбрать "скопировать", перебраться в нужный каталог, тыкнуть "вставить" и тд.

Но зачастую все эти клики и лишние телодвижения несколько утомляют и отнимают ценное время, особенно при частых копированиях одних и тех же данных. В этой статье я расскажу как автоматизировать этот процесс посредством консоли, а точнее написания такой штуки как bat файл .

Bat файл — что к чему, вводная

Для начала немного о том, что такое bat файл , зачем он нужен и с чем его (или их) едят. Дабы не изобретать велосипед воспользуюсь выдержкой из Википедии:

Пакетный файл (т.е bat файл, от англ. batch file ) — текстовый файл в MS-DOS, OS/2 или Windows , содержащий последовательность команд, предназначенных для исполнения командным интерпретатором.

После запуска пакетного файла, программа — интерпретатор (как правило COMMAND.COM или CMD.EXE ) читает его строка за строкой и последовательно исполняет команды.

Пакетный файл — аналог shell script в Unix -подобных операционных системах.

Пакетные файлы полезны для автоматического запуска приложений. Основная область применения — автоматизация наиболее рутинных операций, что регулярно приходится совершать пользователю компьютера.

Примерами таких операций могут служить — обработка текстовых файлов; копирование, перемещение, переименование, удаление файлов; работа с папками; архивация; создание резервных копий баз данных и т. п.

Пакетные файлы поддерживают операторы if и goto (а в системах семейства Windows NT и расширенный оператор for ), что позволяет обрабатывать результаты выполнения предыдущих команд или приложений и в зависимости от этого выполнять дальше тот или иной блок команд (как правило, в случае удачного завершения приложение возвращает 0 в переменной errorlevel; в случае неудачного — 1 или большее значение).

Пакетные файлы в DOS имеют расширение . bat ; для других операционных систем они могут иметь другие расширения — например, . CMD в Windows NT и OS/2 , или .BTM в 4DOS или подобных оболочках.

С теорией разобрались, приступим к, собственно, практике, а именно созданию bat-ника.

Как создать bat файл и использовать его

Давайте подготовим небольшое тестовое поле, чтобы было на базе чего экспериментировать. Откройте мой компьютер и создайте на диске C: папочку test . Зайдите в неё и создайте в ней папку testcopy .

Накидайте туда файлов (штук 5-10 ) — фотки, документы и тд и тп (любых короче). Поле для экспериментов готово. Далее нам надо создать, собственно, сам bat файл по нажатию на который у нас будет происходить копирование папки C: est estcopy в, скажем, папку C: estackup . Создавать вторую папку (которая backup ) не надо — она будет появляться автоматически.

Создать bat очень просто. Жмем правой кнопкой мышки там где хотим его создать (расположение не важно — можно прямо на рабочем столе) и выбираем " Создать " — " Текстовый документ ".

Задаем созданному файлу название и открываем его блокнотом или любым другим текстовым редактором. Т.е. на данный момент мы имеем открытый текстовый файлик, который называется, допустим, копирование.txt .

Добавляем в файл команду, например, для копирования

Далее, собственно, нам в этот файлик нужно ввести команду, которая будет воспроизводиться по средством консоли ( cmd ) при запуске этого файла. В данном случае мы воспользуемся командой xcopy ибо именно она позволяет копировать файлы, каталоги и подкаталоги. Учитывая все пути у нас получится следующая команда:

xcopy C: est estcopy C: estackup /f /i /y /s

Разъясняю что тут к чему:

  • xcopy — это сама команда;
  • C: est estcopy — это источник, т.е. папка откуда копируются файлы и каталоги;
  • C: estackup — это результат, т.е. место, куда будут скопированы файлы и каталоги;
  • /f /i /y /s — дополнительные параметры синтаксиса для команды xcopy (см.синтаксис ниже по тексту).

Количество строчек может быть любым, т.е. если Вам надо скопировать 100 папок, Вы пишете 100 строчек в одном файле и меняете в них только пути.

Далее, касательно синтаксиса (какие дополнительные параметры есть, какие можно дописать и зачем они нужны).

Какие есть (т.е. те, что я указал в данном примере):

  • /f — выводит имена исходных файлов и файлов-результатов в процессе копирования
  • /i — создает новый каталог в случае, если тот отсутствует в конечном пути
  • /y — перезаписывает файл в случае, если он уже есть
  • /s — копирует каталоги и подкаталоги, если они не пусты. Если параметр /s не задан, команда xcopy будет работать только с одним каталогом.

Как по мне — это основной список параметров необходимых для "тихого" копирования, т.е. без лишних вопросов о перезаписи, создания каталогов и прочей шушеры. Касательно остального синтаксиса можно почитать, например, тут.

Далее нам надо сменить формат файла с txt на bat . Делается это следующим образом.

Меняем формат файла и пробуем его запустить

Сначала открываем " Мой компьютер ", там переходим " Сервис " — " Свойства папки " — " Вид " и снимаем галочку " Скрывать расширение для зарегистрированных типов файлов ".

Жмем " Применить " и " Ок ". Теперь мы можем менять расширение известных системе файлов, а посему направляемся к нашему файлику, жмем правой кнопкой мышки, выбираем " Переименовать " и методом печатания на клавиатуре меняем расширение с txt на bat (на вопрос системы стоит ли это делать отвечаем утвердительно).

В результате мы имеем следующую картину (в вашем случае файлик называется иначе, но имеет тот же формат):

Собственно, все, что нам остается — это запустить этот файл простым кликом по нему мышки.

Если Вы все сделали правильно, то перед Вами промелькнет консоль и по известному пути появится новая папочка с заданным заранее названием и файлами внутри скопированными из известной Вам папки, т.е картина получится примерно следующая:

Ну или несколько другая, в зависимости от того какие пути и названия папок Вы прописывали в команде.
Отредактировать файлик можно сменив ему расширение обратно на .txt и открыв любым текстовым редактором.

Послесловие

Как я уже сказал и Вы сами наверное осознали — использование подобного bat файл ‘а зачастую экономит кучу времени, т.е. один раз написал и периодически запускаешь одним кликом и вместо многоминутных тычков мышкой и ползания по всем папкам получаешь автоматизированный процесс копирования.

При желании можно поставить запуск этого bat -ника в определенные дни через планировщик Windows (или другие программы позволяющие это делать) и вообще забыть о проблеме долгих ручных backup ‘ов.

Если есть какие-то вопросы или проблемы — спрашивайте. Как всегда помогу чем смогу 😉

PS: Если мне не изменяет память, то это кусочек темы из умных админских книжек, а именно из раздела " Автоматизация администрирования ".. так что можете собой гордится 🙂

  • 7 апреля

Набросал ещё один маленький BAT скрипт для резервного копирование папки. Внесите свои данные и через scheduler настройте расписание резервного копирования.

Ссылки

Функции

  • С помощью xcopy делает резервные копии папки.
  • Каждый бэкап сохраняется в отдельную подпапку вида DD.MM.YYYY_hhmmmss.
  • С помощью 7-Zip архивирует резервные копии.
  • Удаляет старые резервные копии.
  • DirName — название папки
  • SourceDir — что бэкапим
  • BackupDir — куда бэкапим
  • NumFolders — сколько подпапок с бэкапами хранить
  • a7z — путь к 7z.exe

Пример настройки расписания

В Task Scheduler настраиваем новое задание.

Выбираем пользователя, от имени которого будет выполняться резервное копирование. После сохранения задания нас спросят пароль от него. Ставим галку Run whether user is logged or not — запускать даже если юзер не залогинен.

В триггерах настраиваем расписание. У меня резервное копирование происходит раз в сутки.

Указываем ссылку на наш BAT файл.

Проверяем настройки. OK.

Теперь папка будет резервироваться раз в день. С настройкой NumFolders=10 в BAT файле мы будем хранить данные за последние 10 дней.

Если хотите хранить ежедневные и ежемесячные резервные копии — сделайте два BAT файла и два расписания резервного копирования в разные папки.

Все о локальных сетях и сетевом оборудовании

Копировать большое количество файлов с компьютера на компьютер по локальной сети — дело долгое и однообразное, и после первого часа такой рутинной работы она становится просто невыносимой и хочется, наконец, её автоматизировать. В этом может помочь простейший скрипт копирования файлов по сети, который и будет выполнять большинство действий за вас.

Ниже будет представлены 2 скрипта, использующие «язык VBS», для элементарного перемещения файла из одной сетевой папки, (она конечно же, должна быть «расшарена») в другую.

vbs скрипт копирования файлов по локальной сети

  1. Данный скрипт подойдет для поштучного перемещения файлов из одной папки в другую:

WScript.Echo «Готово.» # данные строки выводят текстовое уведомление/сообщение

WScript.Quit(0)
Dim fso
Set fso = CreateObject(«Scripting.FileSystemObject»)
fso.CopyFile «\1-4ffc2e2aa34941Рабочий столTest1.vbs «, # в данной строке указывается адрес папки, из которой будет производиться копирование

«C:Documents and SettingsАдминистраторРабочий столTest» #адрес папке куда будет копироваться файл.

Скрипт копирования файлов и папок по сети

  1. Для того чтобы скопировать всё содержимое папки используется следующий скрипт:

WScript.Quit(0)
Const OverWriteFiles = True # три нижние строки определяют параметры копирование всех файлов в из папки
Set objFSO = CreateObject(«Scripting.FileSystemObject»)
objFSO.CopyFolder «\1-4ffc2e2aa34941Рабочий столTest» ,
» C:Documents and SettingsАдминистраторРабочий столTest » , OverWriteFiles

Как видите, скрипт наилегчайший. Вам останется только создать текстовый документ, скопировать код и изменить его адреса в соответствии с вашей сетью (а именно те строки, где находятся адреса откуда и куда нужно скопировать файлы). После этого требуется сохранить скрипт с английской раскладкой и разрешением «.vbs».

Если копируемые файла требуется обновлять постоянно, можно полностью автоматизировать данный процесс, создав в «Планировщике задач» сценарий и выставить в параметрах временные интервалы.

Данные скрипты являются одними из самых элементарных. Можно воспользоваться «Командной строкой» и командной «xcopy /?».

После запуска команды вы можете выбрать те параметры, которые вам необходимы, и после этого создать собственный скрипт.