Script em lote para arquivamento

1

Eu preciso configurar uma tarefa de arquivamento no Windows 7 usando a linha de comando do Windows e o WinRAR (ou algum outro programa semelhante). Eu quero criar um script que faça isso, mas não tenho experiência anterior.

Eu quero ser capaz de:

  • recrie a subestrutura das pastas até um nível especificado

  • ter o conteúdo de cada subpasta no último nível arquivado em um arquivo com o nome dessa subpasta

  • proteja com senha o arquivo

  • divida o arquivo em partes de um tamanho especificado

  • têm a capacidade de incluir apenas arquivos com o atributo A (rchive)

  • limpe o atributo A (rchive) após arquivar

  • tem a possibilidade de excluir determinados arquivos e pastas, especificando-os em um arquivo de texto.

Qualquer ajuda é muito apreciada.

Eu também estou pronto para aprender coisas novas, então me apontar alguns tutoriais que me ajudariam a realizar essa tarefa também é muito apreciado.

Editar:

Considere o seguinte exemplo: suponha que eu queira arquivar o conteúdo de uma pasta chamada DOCS e recriar sua estrutura até o Nível 2 ('DOCS' é considerado Nível 0). Suponha que a estrutura das subpastas, até o segundo nível, seja a seguinte:

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\

Eu quero obter o seguinte backup estruturado (em uma partição ou unidade diferente):

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

    
por digital-Ink 25.05.2013 / 16:10

1 resposta

2

Isso funciona para as etapas 1 e 2; isso cria um arquivo rar chamado "Level2Name.rar" para cada uma das pastas de nível 2 em uma estrutura de árvore de pastas espelhadas:

Se você quiser incluir a estrutura da árvore de pastas dentro do arquivo rar ("Docs / Lv1 / Lv2 / Files") apenas remova -ep do comando 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 
    
por 25.05.2013 / 17:38