PDA

View Full Version : Gestione file: alzare di un livello i file nelle sottocartelle?


exion
13-10-2011, 11:40
Ho il seguente problema.

Ho diverse centinaia di cartelle che contengono a loro volta diverse centinaia di file.
Le cartelle sono di due tipo. Nel primo tipo, sono contenuti direttamente i file archiviati. Il secondo tipo invece contiene una (e una sola) sottocartella, con all'interno i file.

Questa situazione si è venuta a creare per un errore mio (a un certo punto ho cambiato il sistema di archiviazione senza rendermi conto che ciò rendeva la struttura delle cartelle non omogenea).

La domanda è quindi questa: come faccio ad "alzare" di un livello la posizione dei file contenuti nelle sottocartelle, e solo quelli, in modo da avere una struttura omogenea con "directory >> file" per tutte le cartelle anziché "directory >> sottodirectory >> file"?

Un batch? Una utility specifica? Qualunque suggerimento è il benvenuto.

Wesker
13-10-2011, 12:35
Il banale, taglia incolla perchè non dovrebbe funzionare? Troppe cartelle?

Basta un programmino scritto in c o java. O al limite uno script...

exion
14-10-2011, 14:20
Il copia incolla... funziona. Ma sono più di 2500 cartelle, e oltrettutto non so quali sono annidate e quali no (dovrei aprirle una per una già solo per smistarle).

Per questo non solo mi serve una utility in grado di alzare i file di un livello, ma oltrettutto di farlo con una condizione (cartella con file: non faccio nulla/cartella con sottocartella: alzo i file della sottocartella nella cartella).

x_Master_x
14-10-2011, 14:37
Il copia incolla... funziona. Ma sono più di 2500 cartelle, e oltrettutto non so quali sono annidate e quali no (dovrei aprirle una per una già solo per smistarle).

Per questo non solo mi serve una utility in grado di alzare i file di un livello, ma oltrettutto di farlo con una condizione (cartella con file: non faccio nulla/cartella con sottocartella: alzo i file della sottocartella nella cartella).

Non credo esista qualcosa di già bello e fatto.
Devi scrivertelo da solo e impostare la condizione. Se non conosci nessun linguaggio di programmazione, ad esempio puoi usare Autoit
I comandi che ti interessano sono:

FileCopy
Copia solo i file e non le cartelle, as esempio dalla cartella "Test/Prova" copia solo i jpeg e spostali nella cartella superiore. In teoria ti basterebbe solo questo comando. Se utilizzi la wildcard *.* copia tutti i file con estensione.
FileCopy("C:\Test\Prova\*.jpg", "C:\Test\")

If...then
( Se rispetta condizione x esegui y )

FileMove
Sposta tutta la directory, con tutti i file dentro, ad esempio
FileMove("C:\Test\Prova","C:\Test\")

Dopo che hai scritto lo script tramite lo Scite Editor, lo compili come .exe e lo avvi.
Buon lavoro :D

exion
02-11-2011, 09:32
Proverò, grazie. :)