PDA

View Full Version : Programma per suddividere file in cartelle...


cccp73
16-05-2008, 22:36
ciao a tutti, cercherò di essere il più chiaro possibile...
poniamo di avere una directory con al suo interno un determinato numero di file midi il nome dei quali è composto da due parole (autore - titolo), divise tra di loro dal trattino "-" (ad esempio 883 - chiuditi nel cesso); esiste un programma che mi permetta di creare tante sottodirectory quanti sono gli autori, in modo di avere una directory per ogni autore anzichè avere tutti i brani in un'unica directory?
ciao e grazie!!

commi
17-05-2008, 01:32
Un programmino che potrebbe fare al caso tuo è FileSieve: http://software.bootblock.co.uk/?id=filesieve3.
Anch'io sono interessato a questo programma ma, cliccando su download, si apre "impossibile visualizzare la pagina".
Cmq puoi cercare anche la versione precedente (la 2.03).

Tommy81
17-05-2008, 09:47
Un programmino che potrebbe fare al caso tuo è FileSieve: http://software.bootblock.co.uk/?id=filesieve3.
Anch'io sono interessato a questo programma ma, cliccando su download, si apre "impossibile visualizzare la pagina".
Cmq puoi cercare anche la versione precedente (la 2.03).

Forse hai qualche blocco di sicurezza nel browser tipo quello che arresta i popups.

commi
17-05-2008, 12:42
Forse hai qualche blocco di sicurezza nel browser tipo quello che arresta i popups.
Si avevi ragione, avevo il file hosts che bloccava il download.
In ogni caso, il link che ho postato, che si riferisce alla versione 3 del programma, (almeno a me) fa scaricare una versione vecchia, la 0.97.
Il link esatto per il download della ver. 3 è questo:
http://software.bootblock.co.uk/get.php?id=filesieve3

john_revelator
18-05-2008, 22:28
ciao a tutti, cercherò di essere il più chiaro possibile...
poniamo di avere una directory con al suo interno un determinato numero di file midi il nome dei quali è composto da due parole (autore - titolo), divise tra di loro dal trattino "-" (ad esempio 883 - chiuditi nel cesso); esiste un programma che mi permetta di creare tante sottodirectory quanti sono gli autori, in modo di avere una directory per ogni autore anzichè avere tutti i brani in un'unica directory?
ciao e grazie!!

Incuriosito dalla tua domanda ho fatto una prova e trovato una possibile soluzione. :)

Per prima cosa scaricati la powershell di microsoft.
http://www.microsoft.com/windowsserver2003/technologies/management/powershell/download.mspx

Una volta installata la richiami digitando powershell da esegui.

Tramite il comando cd raggiungi la cartella contenente i tuoi file midi.

A questo punto digiti i seguenti comandi:

1)
gci | ? {-not $_psiscontainer} | % {$_.name.split("-")[0].trim()} | sort-object -unique | % {new-item -type directory $_}

con questo comando creerai le cartelle relative a ogni singolo cantante.

2) Carica le cartelle dentro un array
$arr = gci | ? {$_.psiscontainer}

3) Carica i file dentro un altro array
$file = gci | ? {-not $_.psiscontainer}

4) A questo punto cicli tutto il contenuto (file e cartelle e quando il nome della cartella coincide con la parte sinistra del nome del file, usando il "-" come separatore, sposti il file nell'apposita cartella

foreach ($fl in $file) {foreach($cart in $arr) {if($fl.name.split("-")[0].trim() -eq $cart) {mi "$fl" -destination $cart}}}

Testato e funzionante. :)

cccp73
19-05-2008, 14:03
Incuriosito dalla tua domanda ho fatto una prova e trovato una possibile soluzione. :)

Per prima cosa scaricati la powershell di microsoft.
http://www.microsoft.com/windowsserver2003/technologies/management/powershell/download.mspx

Una volta installata la richiami digitando powershell da esegui.

Tramite il comando cd raggiungi la cartella contenente i tuoi file midi.

A questo punto digiti i seguenti comandi:

1)
gci | ? {-not $_psiscontainer} | % {$_.name.split("-")[0].trim()} | sort-object -unique | % {new-item -type directory $_}

con questo comando creerai le cartelle relative a ogni singolo cantante.

2) Carica le cartelle dentro un array
$arr = gci | ? {$_.psiscontainer}

3) Carica i file dentro un altro array
$file = gci | ? {-not $_.psiscontainer}

4) A questo punto cicli tutto il contenuto (file e cartelle e quando il nome della cartella coincide con la parte sinistra del nome del file, usando il "-" come separatore, sposti il file nell'apposita cartella

foreach ($fl in $file) {foreach($cart in $arr) {if($fl.name.split("-")[0].trim() -eq $cart) {mi "$fl" -destination $cart}}}

Testato e funzionante. :)

mi sento morire solo a vedere tutte queste parentesi!!!! comunque mi armo di pazienza e provo subito!!
in effetti filesieve funziona (usando il metodo delimiter) però purtroppo non mi permette di cancellare la parte a monte del -; in pratica mi ordina i file in sottocartelle tante quanti sono gli autori, poi però al suo interno ritrovo il nome autore - titolo e non solo titolo...

ti faccio sapere! (più che altro ti chiedo di tenerti a disposizione se mi dovessi impappinare...)

cccp73
19-05-2008, 17:02
allora, ho fatto una prova veloce con una directory con pochi brani, tanto per fare una prova...
allora: si sono create le sottocartelle con il nome autore e al loro interno ci sono i brani di quell'autore: però nel nome dei brani figura ancora il nome autore a sinistra del -; dove ho sbagliato?

john_revelator
19-05-2008, 17:34
Non hai sbagliato niente. Semplicemente prima che ti postassi lo script non avevi specificato che volevi rimuovere il nome dell'autore . Ci penso un pò e vedo di risolvere anche quel problema. :)

john_revelator
19-05-2008, 17:51
Ok, così sembra andare.:)
Lancia questo comando all'interno della tua cartella principale.

gci -recurse | ? {-not $_.psiscontainer} | % {rename-item $_.fullname -newname $_.fullname.split("-")[1].trim()}

cccp73
21-05-2008, 07:51
grande!!!! :cincin:
tutto ok!!!!
ti ringrazio infinitamente john, non ho parole!!!!
alla prossima!

john_revelator
21-05-2008, 08:26
Felice di esserti stato utile. :)