1

Мне нужно настроить задачу архивирования в Windows 7 с помощью командной строки Windows и WinRAR (или какой-либо другой подобной программы). Я хочу создать сценарий, который делает это, но у меня нет предыдущего опыта.

Я хочу иметь возможность:

  • воссоздать подструктуру папок до указанного уровня

  • хранить содержимое каждой подпапки на последнем уровне в одном архиве с именем этой подпапки

  • защитить паролем архив

  • разбить архив на куски указанного размера

  • иметь возможность включать только файлы с атрибутом A(rchive)

  • очистить атрибут A(rchive) после архивации

  • есть возможность исключить определенные файлы и папки, указав их в текстовом файле.

Буду признателен за любую оказанную помощь.

Я также готов изучать новые вещи, поэтому очень ценю указание на некоторые учебные пособия, которые помогут мне выполнить эту задачу.

Редактировать:

Рассмотрим следующий пример: предположим, что я хочу заархивировать содержимое папки с именем DOCS и воссоздать ее структуру до уровня 2 («DOCS» считается уровнем 0). Предположим, что структура подпапок, вплоть до второго уровня, следующая:

DOCS\L1-A\L2-A\

DOCS\L1-A\L2-B\

DOCS\L1-A\L2-C\

DOCS\L1-B\L2-A\

DOCS\L1-B\L2-B\

DOCS\L1-B\L2-C\

Я хочу получить следующую структурированную резервную копию (на другом разделе или диске):

DOCS\L1-A\L2-A\L2-A.rar

DOCS\L1-A\L2-B\L2-B.rar

DOCS\L1-A\L2-C\L2-C.rar

DOCS\L1-B\L2-A\L2-A.rar

DOCS\L1-B\L2-B\L2-B.rar

DOCS\L1-B\L2-C\L2-C.rar

1 ответ1

2

Это работает для шагов 1 и 2; это создает файл rar с именем «Level2Name.rar» для каждой из папок уровня 2 в структуре дерева зеркальных папок:

Если вы хотите включить структуру дерева папок в файл rar («Docs /Lv1 /Lv2 /Files»), просто удалите -ep из команды winrar.

setlocal
set savelocation=D:\Backups
set path=%path%;C:\Program Files\WinRAR
for /F "eol= usebackq delims=" %%A IN (`dir "DOCS" /A:D /B`) do call :FL1 "%%A"
goto :eof

:FL1
pushd DOCS\%1
set level1="%~nx1"
for /F "eol= usebackq delims=" %%A IN (`dir * /A:D /B`) do call :FL2 "%%A"
goto :eof

:FL2
set level2="%~nx1"
POPD
if not exist "%savelocation%\DOCS\%level1%\%level2%" mkdir "%savelocation%\DOCS\%level1%\%level2%"
winrar a -ibck -inul -ep "%savelocation%\DOCS\%level1%\%level2%\%level2%.rar" "DOCS\%level1%\%level2%"
goto :eof

endlocal 

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .