Скрипт обновления файлов КЛАДР. Wget качает, а 7zip извлекает.
@echo off & setlocal enableextensions
@echo off
REM Основной каталог.
SET DT=%DATE%%TIME%
SET BASEDIR=%PROGRAMFILES%\wget\
REM имя wget, возможно с подкаталогом.
SET WGET=wget.exe
REM Ссылка без указания конечного файла.
SET URL=http://www.gnivc.ru/html/gnivcsoft/KLADR/
REM Указываем имя файла для скачки.
SET FILE=BASE.7z
REM Укажем имя файла лога.
SET LOG=wget.log
REM Укажим программы для распаковки архива.
SET UNPACK="%PROGRAMFILES%\7-Zip\7z.exe"
REM Укажим где лежит архив, он сохраняется в BASEDIR
SET ARHIVE="%PROGRAMFILES%\wget\%FILE%"
REM Укажим куда извлечь файлы.
SET EXTRACT="D:\base\"
SET BLAT="%PROGRAMFILES%\blat\blat.exe"
echo Begin work %DT% >> "%BASEDIR%%LOG%"
REM Получим размер файла локального.
@for %%i in (%ARHIVE%) do (set /a size1=%%~Zi)
echo size local file is %size1% >> "%BASEDIR%%LOG%"
REM Полчим размер удаленного файла.
for /f "usebackq tokens=2" %%i in (`wget.exe --spider %URL%%FILE% 2^>^&1 ^|find.exe /i "Length:"`) do (set /a size2=%%i)
if errorlevel 0 goto NORMAL
if errorlevel 1 goto GOODBYE
REM Проверим существует ли файл по ссылке.
REM "%BASEDIR%%WGET%" --spider %URL%%FILE% -o "%BASEDIR%%LOG%"
REM echo %ERRORLEVEL%
REM if errorlevel 0 goto NORMAL
REM if errorlevel 1 goto GOODBYE
:NORMAL
REM Запустим закачку.
echo size remote file is %size2% >> "%BASEDIR%%LOG%"
REM "%BASEDIR%%WGET%" -t 10 -w 5 -nd -N -a -b %URL%%FILE% -o "%BASEDIR%%LOG%"
if %size1% EQU %size2% (
echo %size1% is equal to %size2% >> "%BASEDIR%%LOG%"
goto GOODBYE
) else (
if %size1% LSS %size2% (
echo %size1% is smaller than %size2% >> "%BASEDIR%%LOG%"
"%BASEDIR%%WGET%" -t 10 -w 5 -nd -N -a -b %URL%%FILE% -o "%BASEDIR%%LOG%"
%UNPACK% e %ARHIVE% -o%EXTRACT% -y >> "%BASEDIR%%LOG%"
%BLAT% -p admin -charset windows-1251 -subject "Kladr was update %DATE%%TIME%" -body "Kladr was update %DATE%%TIME%" -to admin@z-tec.ru -attach "%BASEDIR%%LOG%"
) else (
echo %size1% is greater than %size2% >> "%BASEDIR%%LOG%"
"%BASEDIR%%WGET%" -t 10 -w 5 -nd -N -a -b %URL%%FILE% -o "%BASEDIR%%LOG%"
%UNPACK% e %ARHIVE% -o%EXTRACT% -y >> "%BASEDIR%%LOG%"
%BLAT% -p admin -charset windows-1251 -subject "Kladr was update %DATE%%TIME%" -body "Kladr was update %DATE%%TIME%" -to admin@z-tec.ru -attach "%BASEDIR%%LOG%"
)
)
REM Проверим существует архив.
REM if exist %ARHIVE% (
REM Выполним распоковку архива, если он существует.
REM %UNPACK% e %ARHIVE% -o%EXTRACT% -y >> "%BASEDIR%%LOG%"
REM ) else (
REM Если файл не существует запишем это.
REM echo %ARHIVE% file is missing %DATE%%TIME% >> "%BASEDIR%%LOG%"
REM )
:GOODBYE
echo END work %DT% >> "%BASEDIR%%LOG%"
EXIT
Скрипт ведет лог.
Очень удобно нет необходимости проверять обновления кладр.