
Скрипт для бэкапа файлов на флешку (Windows)
Понадобилось одному пользователю каждое утро с файл сервера бэкапить 2-а файлика на флэшку. Чтобы не делать каждое утро по 10 действий и облегчить человеку жизнь - написал скрипт, который с сетевого диска копирует 2-а файла во временную папку, запаковывает winrar-ом, называет архив сегодняшней датой и кидает на флешку. Если все прошло как надо - пользователь получает уведомление, что архив успешно скопирован или наоборот, получает ошибку! Писалось все в *.BAT-e.
Вот сам скрипт:
@ECHO off
SET FILE1="z:\server\db\file1.doc"
SET FILE2="z:\server\db\file2.doc"
SET TEMP="c:\TEMP\"
SET RAR="c:\Program Files\WinRAR\WinRAR.exe"
SET NAME=%DATE%
SET FLASHDRIVE="m:\"
if exist %TEMP% rmdir /s /q %TEMP%
mkdir %TEMP%
if exist %FILE1% copy %FILE1% %TEMP%
if exist %FILE2% copy %FILE2% %TEMP%
%RAR% a -ep1 %FLASHDRIVE%\%NAME%.rar %TEMP%
rmdir /s /q %TEMP%
if exist %FLASHDRIVE%\%NAME%.rar @ECHO Succesful!!!
if not exist %FLASHDRIVE%\%NAME%.rar @ECHO ERROR
pause
Что к чему:
@ECHO off - отключаю вывод всех команд
объявляю переменные:
SET FILE1="z:\server\db\file1.doc" - это первый файл который мне нужно скопировать
SET FILE2="z:\server\db\file2.doc" - а это второй
SET TEMP="c:\TEMP\" - временная папка
SET RAR="c:\Program Files\WinRAR\WinRAR.exe" - указываю где находится Winrar
SET NAME=%DATE% - здесь я задаю имя архива. Имя архива = сегодняшняя дата. т.е. каждый день у нового файла будет новое имя
SET FLASHDRIVE="m:\" - объявил флэшку, кстати я ей поменял букву через "Управление компьютером-> Управление дисками". Винда запоминает какую букву вы дали своей флешке и ставит именно ее.
if exist %TEMP% rmdir /s /q %TEMP% - теперь я проверяю, если существует временная папка, тогда нужно удалить её.
Параметр /s удаляет указанный каталог и все подкаталоги вместе с файлами.
mkdir %TEMP% - создаю временную папкуПараметр /q удаляет каталоги без запроса подтверждения.
if exist %FILE1% copy %FILE1% %TEMP% - если существует 1-ый файл - скопировать его в темп
if exist %FILE2% copy %FILE2% %TEMP% - то же самое и со 2-ым файлом
%RAR% a -ep1 %FLASHDRIVE%\%NAME%.rar %TEMP% - архивирую
а - добавить в архив
-ep1 - если не поставить этот ключ, то файлы в архиве, будут еще и в папке с названием temp, это не очень удобно.
rmdir /s /q %TEMP% - и снова я удаляю временную папку - ну чтобы чище было на компе
Далее проверяю, есть ли архив с сегодняшней датой на флешке, если есть показать Succesful, а если нет - сами понимаете - ERROR
if exist %FLASHDRIVE%\%NAME%.rar @ECHO Succesful!!!
if not exist %FLASHDRIVE%\%NAME%.rar @ECHO ERROR
pause - не дает окну закрыться, чтобы пользователь успел прочитать сообщения и предлагает "Press any key".
Где находится кнопка "any key" я до сих пор не знаю.
Если кому-то нужно будет использовать, скопировать скрипт в текстовый документ и сохранить с расширением *.bat
UPDATE:
Справочник по коммандной строке в формате *.CHM можно сделать так:
Правой кнопкой по раб. столу "Создать ярлык" и в открывшееся окно вставить вот это:
%windir%\hh.exe ms-its:%windir%\Help\ntcmds.chm::/ntcmds.ctm
То же самое есть на сайте microsoft.com
SET NAME=%DATE%
ОтветитьУдалитьКстати возможны проблемы с копированием архива на флешку, если формат даты будет такой:
11/11/2011
Слеш нужно заменить на точку или тире:
11-11-2011
Формат даты меняется в панели управления - региональные настройки.
ОтветитьУдалитьааа вирус!))
ОтветитьУдалить