Script batch per l'archiviazione


1

Devo impostare un'attività di archiviazione su Windows 7 utilizzando la riga di comando di Windows e WinRAR (o qualche altro programma simile). Voglio creare uno script che faccia questo, ma non ho alcuna esperienza precedente.

Voglio essere in grado di:

  • ricreare la sottostruttura delle cartelle fino a un livello specificato

  • far archiviare il contenuto di ogni sottocartella all'ultimo livello in un archivio con il nome di quella sottocartella

  • proteggere con password l'archivio

  • dividere l'archivio in blocchi di una dimensione specificata

  • hanno la possibilità di includere solo i file con l' Aattributo (rchive)

  • cancella l' Aattributo (rchive) dopo l'archiviazione

  • avere la possibilità di escludere determinati file e cartelle, specificandoli in un file di testo.

Ogni aiuto è molto apprezzato.

Sono anche pronto a imparare cose nuove, quindi mi viene molto apprezzato il fatto di indicarmi alcuni tutorial che mi aiuterebbero a svolgere questo compito.

Modificare:

Si consideri il seguente esempio: si supponga di voler archiviare il contenuto di una cartella chiamata DOCSe ricrearne la struttura fino al Livello 2 ("DOCS" è considerato Livello 0). Supponiamo che la struttura delle sottocartelle, fino al secondo livello, sia la seguente:

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\

Voglio ottenere il seguente backup strutturato (su una partizione o unità diversa):

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
Hai esaminato le opzioni della riga di comando di WinRAR e identificato quelle che potrebbero aiutarti? Puoi anche spiegare in dettaglio il tuo secondo requisito, preferibilmente con un piccolo esempio?
Karan,

@Karan: ho modificato l'op e ho dato un esempio minimo. Ho esaminato le opzioni della riga di comando di WinRAR, ma non riesco a ricreare la cartella strutturata come indicato (tutti gli altri aspetti possono essere raggiunti in WinRAR, ma non so come passare automaticamente attraverso la struttura delle cartelle).
digital-Ink,

Hmm, quello che vuoi fare (archiviare separatamente i contenuti di ogni directory di secondo livello) potrebbe essere possibile con uno script batch abbastanza complesso. Hai assolutamente bisogno che ciò avvenga tramite batch? In PowerShell qualcosa di simile a IMO potrebbe essere molto più semplice da realizzare invece di spaccare la testa su una soluzione basata su batch.
Karan,

@Karan: ogni tipo di soluzione è il benvenuto.
digital-Ink,

1
Non sono un esperto di PS, ma ho modificato i tag, quindi spero che coloro che tengono un orologio sul tag PS vengano informati di questa domanda e rispondano.
Karan,

Risposte:


2

Funziona con i passaggi 1 e 2; questo crea un file rar chiamato "Level2Name.rar" per ciascuna delle cartelle di livello 2 in una struttura ad albero di cartelle con mirroring:

Se si desidera includere la struttura ad albero delle cartelle all'interno del file rar ("Docs / Lv1 / Lv2 / Files") è sufficiente rimuovere -ep dal 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 

+1 Non l'ho provato da solo, ma sembra buono!
Karan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.