Рабочий доп. батник для внешнего транспорта почтового сервера СМ.
В принципе вся логика в одной строке: FOR /F "usebackq" %%I IN (`dir ...
Файлы строятся по маске в порядке записи, старые сначала, без подкаталогов.
В каталоге входящих последовательно разархивирует/удаляет,
в исходящих пишет текущий список в файл и затем отрабатывает архиватор по нему.
Код:
@echo off
rem Архивация/разархивация почтовых пакетов для серверов магазинов
set base=DBTEST
set slave_ftp=E:\DBTEST.FTP
set file_mask=*.xml
set arc_mask_to=to_%base%_*.rar
set arc_mask_from=from_%base%_*.rar
SETLOCAL ENABLEDELAYEDEXPANSION
:loop
rem Разархивация входящих
echo %DATE% %TIME:~,8% *** %slave_ftp%\in\ ***
if exist %slave_ftp%\in\%arc_mask_to% (
FOR /F "usebackq" %%I IN (`dir /A:-D /O:D /T:W /B %slave_ftp%\in\%arc_mask_to%`) DO (
echo %slave_ftp%\in\%%I
rar.exe e %slave_ftp%\in\%%I *.* -inul -y %slave_ftp%\in\
if "!errorlevel!"=="0" (
del /q %slave_ftp%\in\%%I
) else (
echo -== Rar error #!errorlevel! ==-
)
)
)
cls
timeout 60 >CON
echo.
rem Архивация исходящих
echo %DATE% %TIME:~,8% *** %slave_ftp%\out\ ***
if exist %slave_ftp%\out\%file_mask% (
FOR /F "usebackq" %%I IN (`dir /A:-D /O:D /T:W /B %slave_ftp%\out\%file_mask%`) DO (
rem Добавление в список файлов для архивации
echo %slave_ftp%\out\%%I >>%temp%\smpost_%base%_out.lst
echo %slave_ftp%\out\%%I
)
if exist %temp%\smpost_%base%_out.lst (
rar.exe m %slave_ftp%\out\from_%base%_ @%temp%\smpost_%base%_out.lst -y -ep -m5 -s -inul -agYYMMDD-HHMMSS
if not "!errorlevel!"=="0" (
echo -== Rar error #!errorlevel! ==-
)
dir /B %slave_ftp%\out\!arc_mask_from!
del /q %temp%\smpost_%base%_out.lst >nul
)
)
echo.
goto loop
ENDLOCAL