понедельник, декабря 10, 2007

Написание bat сценариев в windows

Стояла задачка собирать по сети файлики, архивировать и складывать в одно место для дальнейшей записи на болванки.
Задачка не сложная, но мне понравилось как я ее решил, вот и выкладываю. Сеть включает в себя удаленные филиалы, поэтому используем протокол ftp. В качестве архиватора использован бесплатный zip.exe.
Архивировать нужно было файлики получаемые при работе MS SQL сервера, формат файла такой имя_базы_200712100200.bak (где цифры означают четыре первых год, потом две - месяц, две - число, четыре время) Файлы достаточно большие.
Задача усложнялась тем, что выдергивать надо было только файлы с сегодняшним числом. Понятно, что можно было использовать vbs или еще что нибудь, но я в них не силен. Поэтому решение на обычных bat файлах. :)

Содержимое файла send.bat (Архивируем и кладем на ftp)

rem Внимание!!! Для работы скрипта необходим zip.exe в папке c:\send
rem Изменяем формат вывода даты на ггггммчч (20070101)
for /f "tokens=1,2,3 delims=. " %%i in ('date /t') do (set date=%%k%%j%%i)
rem Создаем текстовый файл с подкомандами ftp
echo open АДРЕС_ВАШЕГО_ФТР_СЕРВЕРА > ftp_send.txt
echo user ИМЯ_ПОЛЬЗОВАТЕЛЯ_ФТП >> ftp_send.txt
echo ПАРОЛЬ_ПОЛЬЗОВАТЕЛЯ_ФТП>> ftp_send.txt
echo send *.zip %date%.zip >> ftp_send.txt
echo quit >> ftp_send.txt
rem Архивируем сегодняшний файл из папки c:\BACKUP
c:\send\zip -9 c:\send\%date%.zip "c:\BACKUP\ИМЯ_БАЗЫ_db_%date%*.BAK"
rem Отправляем на ftp
ftp -n -d -s:ftp_send.txt
rem Удаляем локальную копию и файл с подкомандами ftp
del c:\send\%date%.zip
del ftp_send.txt

Содержимое файла get.bat (Забираем с ftp)

rem Изменяем формат вывода даты на ггггммчч (20070101)
for /f "tokens=1,2,3 delims=. " %%i in ('date /t') do (set date=%%k%%j%%i)
rem Создаем текстовый файл с подкомандами ftp
echo open АДРЕС_ВАШЕГО_ФТР_СЕРВЕРА > ftp_get.txt
echo user ИМЯ_ПОЛЬЗОВАТЕЛЯ_ФТП >> ftp_get.txt
echo ПАРОЛЬ_ПОЛЬЗОВАТЕЛЯ_ФТП>> ftp_get.txt
rem Складывать файлы будем в C:\BACKUP
echo lcd C:\BACKUP
echo get %date%.zip C:\BACKUP\%date%.zip >> ftp_get.txt
echo quit >> ftp_get.txt
rem Забираем файл с ftp
ftp -n -d -s:ftp_get.txt
rem Удаляем файл с подкомандами ftp
del ftp_get.txt




Обсудить сообщение можно в форуме admins.arg.su

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