Sarus
26-12-2009, 13:07
Написал батник вот такого плана:
@echo off
Title Формирование RSB архива.
Set Gni=6911
Set Scr=D:\Temp\RSB\Work
Set Dst=D:\Temp\RSB\Archive
Set Lg=D:\Temp\RSB\Log
For /F "Tokens=1 Delims=+- " %%i In ('WMIC OS Get LocalDateTime^|Find "."') Do Set Stamp=%%i
Set vDate=%Stamp:~6,2%.%Stamp:~4,2%.%Stamp:~0,4%
Set vTime=%Stamp:~8,2%.%Stamp:~10,2%
For /f "UseBackq Tokens=1* Delims=_" %%a in (`"Dir %Scr% /B/AD/ON | FindStr /IBRC:"^[0-9]""`) Do (
Echo ######################## Формирование RSB архива ########################>>%Lg%\Arch_%vDate%_%vTime%.log
Arj m -e "%Dst%\%Gni%_%%a_RSB_%vDate%_%vTime%.arj" "%Scr%\%%a_%%b">>%Lg%\Arch_%vDate%_%vTime%.log
Echo ######################## Тестирование RSB архива ########################>>%Lg%\Arch_%vDate%_%vTime%.log
Arj t "%Dst%\%Gni%_%%a_RSB_%vDate%_%vTime%.arj">>%Lg%\Arch_%vDate%_%vTime%.log
)
For /f "UseBackq Delims=" %%d in (`"Dir %Scr% /B/AD/S | Sort /R "`) Do Rd "%%d
Сам батник архивирует файлы *.doc каталогов ХХХХ_* (где ХХХХ - любые 4 цифры и * - любой текст, например: 6548_ООО Мир) расположенные D:\Temp\RSB\Work и тестит архив. Архивы обзываются 6911_ХХХХ_RSB_Дата_Время.arj Помещает архивы в D:\Temp\RSB\Archive. Все пишется в лог. И удаляются пустые каталоги ХХХХ_* в D:\Temp\RSB\Work.
А как сделать чтоб архивировался сам каталог, а не его содержимое?
Вопрос возник из-за того, что вдруг в D:\Temp\RSB\Work будут 2 катала например "6548_ООО Мир" и "6548_ООО Бор", то все содержимое упадет в одни архив и их файлы перемешаются, чего не хотелось бы.
@echo off
Title Формирование RSB архива.
Set Gni=6911
Set Scr=D:\Temp\RSB\Work
Set Dst=D:\Temp\RSB\Archive
Set Lg=D:\Temp\RSB\Log
For /F "Tokens=1 Delims=+- " %%i In ('WMIC OS Get LocalDateTime^|Find "."') Do Set Stamp=%%i
Set vDate=%Stamp:~6,2%.%Stamp:~4,2%.%Stamp:~0,4%
Set vTime=%Stamp:~8,2%.%Stamp:~10,2%
For /f "UseBackq Tokens=1* Delims=_" %%a in (`"Dir %Scr% /B/AD/ON | FindStr /IBRC:"^[0-9]""`) Do (
Echo ######################## Формирование RSB архива ########################>>%Lg%\Arch_%vDate%_%vTime%.log
Arj m -e "%Dst%\%Gni%_%%a_RSB_%vDate%_%vTime%.arj" "%Scr%\%%a_%%b">>%Lg%\Arch_%vDate%_%vTime%.log
Echo ######################## Тестирование RSB архива ########################>>%Lg%\Arch_%vDate%_%vTime%.log
Arj t "%Dst%\%Gni%_%%a_RSB_%vDate%_%vTime%.arj">>%Lg%\Arch_%vDate%_%vTime%.log
)
For /f "UseBackq Delims=" %%d in (`"Dir %Scr% /B/AD/S | Sort /R "`) Do Rd "%%d
Сам батник архивирует файлы *.doc каталогов ХХХХ_* (где ХХХХ - любые 4 цифры и * - любой текст, например: 6548_ООО Мир) расположенные D:\Temp\RSB\Work и тестит архив. Архивы обзываются 6911_ХХХХ_RSB_Дата_Время.arj Помещает архивы в D:\Temp\RSB\Archive. Все пишется в лог. И удаляются пустые каталоги ХХХХ_* в D:\Temp\RSB\Work.
А как сделать чтоб архивировался сам каталог, а не его содержимое?
Вопрос возник из-за того, что вдруг в D:\Temp\RSB\Work будут 2 катала например "6548_ООО Мир" и "6548_ООО Бор", то все содержимое упадет в одни архив и их файлы перемешаются, чего не хотелось бы.