Сегодня мы узнаем про то, что такое 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:testtestcopy в, скажем, папку C:testbackup . Создавать вторую папку (которая backup ) не надо — она будет появляться автоматически.
КАК СКОПИРОВАТЬ САЙТ И УСТАНОВИТЬ АДМИНКУ ЗА 3 МИНУТЫ
Создать bat очень просто. Жмем правой кнопкой мышки там где хотим его создать (расположение не важно — можно прямо на рабочем столе) и выбираем » Создать » — » Текстовый документ «.
Задаем созданному файлу название и открываем его блокнотом или любым другим текстовым редактором. Т.е. на данный момент мы имеем открытый текстовый файлик, который называется, допустим, копирование.txt .
Добавляем в файл команду, например, для копирования
Далее, собственно, нам в этот файлик нужно ввести команду, которая будет воспроизводиться по средством консоли ( cmd ) при запуске этого файла. В данном случае мы воспользуемся командой xcopy ибо именно она позволяет копировать файлы, каталоги и подкаталоги. Учитывая все пути у нас получится следующая команда:
xcopy C:testtestcopy C:testbackup /f /i /y /s
Разъясняю что тут к чему:
- xcopy — это сама команда;
- C:testtestcopy — это источник, т.е. папка откуда копируются файлы и каталоги;
- C:testbackup — это результат, т.е. место, куда будут скопированы файлы и каталоги;
- /f /i /y /s — дополнительные параметры синтаксиса для команды xcopy (см.синтаксис ниже по тексту).
Количество строчек может быть любым, т.е. если Вам надо скопировать 100 папок, Вы пишете 100 строчек в одном файле и меняете в них только пути.
Далее, касательно синтаксиса (какие дополнительные параметры есть, какие можно дописать и зачем они нужны).
Какие есть (т.е. те, что я указал в данном примере):
- /f — выводит имена исходных файлов и файлов-результатов в процессе копирования
- /i — создает новый каталог в случае, если тот отсутствует в конечном пути
- /y — перезаписывает файл в случае, если он уже есть
- /s — копирует каталоги и подкаталоги, если они не пусты. Если параметр /s не задан, команда xcopy будет работать только с одним каталогом.
Как по мне — это основной список параметров необходимых для «тихого» копирования, т.е. без лишних вопросов о перезаписи, создания каталогов и прочей шушеры. Касательно остального синтаксиса можно почитать, например, тут.
Далее нам надо сменить формат файла с txt на bat . Делается это следующим образом.
Меняем формат файла и пробуем его запустить
Сначала открываем » Мой компьютер «, там переходим » Сервис » — » Свойства папки » — » Вид » и снимаем галочку » Скрывать расширение для зарегистрированных типов файлов «.
Жмем » Применить » и » Ок «. Теперь мы можем менять расширение известных системе файлов, а посему направляемся к нашему файлику, жмем правой кнопкой мышки, выбираем » Переименовать » и методом печатания на клавиатуре меняем расширение с txt на bat (на вопрос системы стоит ли это делать отвечаем утвердительно).
В результате мы имеем следующую картину (в вашем случае файлик называется иначе, но имеет тот же формат):
Собственно, все, что нам остается — это запустить этот файл простым кликом по нему мышки.
Если Вы все сделали правильно, то перед Вами промелькнет консоль и по известному пути появится новая папочка с заданным заранее названием и файлами внутри скопированными из известной Вам папки, т.е картина получится примерно следующая:
Ну или несколько другая, в зависимости от того какие пути и названия папок Вы прописывали в команде.
Отредактировать файлик можно сменив ему расширение обратно на .txt и открыв любым текстовым редактором.
Послесловие
Как я уже сказал и Вы сами наверное осознали — использование подобного bat файл ‘а зачастую экономит кучу времени, т.е. один раз написал и периодически запускаешь одним кликом и вместо многоминутных тычков мышкой и ползания по всем папкам получаешь автоматизированный процесс копирования.
При желании можно поставить запуск этого bat -ника в определенные дни через планировщик Windows (или другие программы позволяющие это делать) и вообще забыть о проблеме долгих ручных backup ‘ов.
Если есть какие-то вопросы или проблемы — спрашивайте. Как всегда помогу чем смогу 😉
PS: Если мне не изменяет память, то это кусочек темы из умных админских книжек, а именно из раздела » Автоматизация администрирования «.. так что можете собой гордится 🙂
Мы в соц.сетях: ВКFacebookTwitter
Белов Андрей (Sonikelf) Заметки Сис.Админа [Sonikelf’s Project’s] Космодамианская наб., 32-34 Россия, Москва (916) 174-8226
Источник: sonikelf.ru
Создать программу которая копирует все файлы
Добрый вечер. У меня задание: Создайте командный файл, который копирует все файлы с расширением, заданным в качестве первого параметре из папки, заданной вторым параметром в папку, заданную третьим параметром. С помощью команды at реализуйте запуск этого командного файла в заданный момент времени.
Командный файл создал, он все копирует с заданными параметрами от пользователя. Мне осталось сделать команду AT. Перепробывал разные варианты, но так и не запустил в определенный момент времени. Подскажите как правильно это делать.
Белик Виталий 🙂
, имя файла задается полностью, с указанием пути и диска. Если команда запускается на удаленном компьютере, укажите имя сервера и сетевое имя в стандартном формате записи пути (UNC), а не имя диска этого компьютера.
/?
Отображение справки в командной строке.
Заметки
Для вывода списка команд, которые будут выполнены на сервере Marketing, можно использовать следующую команду:
at \marketing
Для получения дополнительных сведений о команде с идентификатором 3 на сервере Corp требуется ввести следующую команду:
at \corp 3
Для запуска команды net share на сервере Corp в 8:00 и перенаправления вывода на сервер Maintenance в общий каталог Reports в файл Corp.txt требуется ввести следующую команду:
at \corp 08:00 cmd /c «net share reports=d:marketingreports >> \maintenancereportscorp.txt»
Чтобы записывать на магнитную ленту резервную копию жесткого диска сервера Marketing в полночь через каждые пять дней, создайте пакетный файл Archive.cmd, содержащий команды резервирования, а затем запланируйте запуск пакетного файла, введя:
at \marketing 00:00 /every:5,10,15,20,25,30 archive
Чтобы отменить вызов всех команд, запланированных на данном сервере, необходимо очистить расписание команды at следующим образом:
at /delete
Чтобы запустить команду, которая не является исполняемым файлом, введите перед ней cmd /c для загрузки программы Cmd.exe следующим образом:
cmd /c dir > c:test.out
Все равно не помогло.
Я читал команду, все перепробывал что там было, что то не так делаю, а вот что не так не пойму.
Источник: www.programmersforum.ru
Простой самодельный бэкап данных (Python + DropBox)
Бэкапы я не делал давно. Было лень, да и данные я не терял уже несколько лет. Но недавно задумался об этом и решил-таки сделать что-то такое, что резервно сохраняло бы то, что не очень хочется потерять. Просто что бы скучно не было, и немного попрактиковаться.
Для начала нужно определиться где хранить копии файлов. По-моему DropBox это очень хороший выбор — это сервис для синхронизации данных на разных компьютерах. Бесплатно дают 2 Гб, плюс программу, которая отображает выбранную локальную папку на ихнее онлайн хранилище.
Добавил файл в эту специальную папку — он добавился на всех компьютерх, на которых стоит специальная программа, настроенная на тот же аккаунт. Плюс доступ через веб-интерфейс. Для бэкапа это очень удобно — не надо заморчиваться как скопировать файлы на FTP, а просто копируем их в специальную папку. Всё работу по заливке/синхронизации сделает DropBox клиент.
Дальше нужно собственно скопировать необходимые файлы. Для этого был написан крохотульный скрипт на питоне, backup.py. Этот скрипт создаёт текстовый список файлов, которые нужно скопировать, и передаёт его WinRar’у, который создаёт архив с указанным именем.
Сначала я хотел полностью поручить WinRar’у создание бэкапа, написав немного кода в батниках, но к сожалению он не умеет пропускать заданные папки (только файлы). Поэтому пришлось писать промежуточный скрипт, который создаёт список файлов. Ну и хорошо, так даже веселее.
У скрипта есть единственный параметр — имя выходного файла-архива со скопированными файлами.
- Читает из текущей папки файл tobackup.lst — там хранится список папок, которые нужно скопировать. Каждая строка — отдельная папка. Например:
d:projects
d:www - Читает список папок, которые нужно исключить из бэкапа. Это опциональный файл igonre.lst в текущей папке. Это либо полный путь (d:projectsold), либо просто имя папки (.svn). Например:
.svn
d:projectsold - Создаёт текстовый список файлов для копирования list.lst (в текущей папке). После этого добавляет в конец файла-списка опциональный файл extra.lst (из текущей папки). Там содержится список файлов, а не папок, для включения. Например, мы хотим сохранить настройки php, но из всей папки d:programsphp нам нужен только один файл php.ini. Поэтому вместо добавления папки с php мы добавляем только один файл php.ini в extra.lst.
- Вызывает архиватор, который создаёт архив с файлами из списка. Параметры архиватора — сохранять полный путь файлов (вместе с диском) и создать архив без сжатия.
Я не зря указывал, что скрипт берёт файлы из текущей папки. Благодаря этому делать разные «профили» очень просто — достаточно создать новую папку, создать там файл tobackup.lst, опциональные ignore.lst и extra.lst, и новый профиль готов! Для удобства можно сделать батник, который будет вызывать backup.py и передавать ему имя файла-архива который должен получиться.
Сейчас, например, у меня есть две папки-профиля, projects (для бэкапа текущих проектов) и other (для бэкапа настроек программ). Сам скрипт лежит в папке core (на том же уровне что и папки профилей), вместе с WinRar’ом.
Папка core:
Rar.exe
WinRAR.exe
rarreg.key
backup.py
Папка projects:
tobackup.lst:
d:projects
d:svn
ignore.lst:
.svn
d:projectsold
backup.bat:
..corebackup.py «d:dropboxmy dropboxbackupdev.rar»
Батник backup.bat вызывает скрипт, передеаёт ему имя получающегося файла-архива, который будет создан в папке, связанной с DropBox. Скрипт берёт файлы-списки из текущей папки (projects в данном случае). Один запуск батника — новый бэкап готов, и DropBox грузит его на сервер.
Осталось прикрутить запуск по расписанию, но меня устроит и ручной запуск несколько раз в месяц.
UPD. Новая версия тут.
Источник: habr.com