|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Dec 2007
Messaggi: 195
|
Suddividere più file in tante sottocartelle automaticamente
Ciao a tutti,
ho un problema nel gestire alcuni file, ho un archivio di circa 400.000 disegni e il programma che dovrebbe gestirli si blocca se all'interno della cartella sono presenti più di un tot di file. Vorrei fare in modo che questi file vengano suddivisi in tante sottocartelle contenenti ognuna 10/20 file. Il tutto in modo del tutto automatizzato tramite un qualche script. Qualcuno conosce qualche programma che faccia al caso mio?
__________________
NUC10i7
MEM: Crucial DDR4 2x16GB 2400 MHz - HD1: Samsung 970 EVO Plus 1TB - HD2: Samsung SSD 850 EVO 500GB |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jan 2007
Città: quel ramo del lago di como, che volge a mezzogiorno... ^^
Messaggi: 19625
|
advanced renamer lo può fare.
__________________
|
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Dec 2007
Messaggi: 195
|
Ho provato a farlo con il programma da te citato, (a parte che se seleziono tutti i file mi da errore) ma non riesco proprio a capire come si fa far dividere i file in modo automatico in più sottocartelle....
Per. es. 100 file divisi in 10 cartelle contenenti 10 file ciascuna....
__________________
NUC10i7
MEM: Crucial DDR4 2x16GB 2400 MHz - HD1: Samsung 970 EVO Plus 1TB - HD2: Samsung SSD 850 EVO 500GB |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jan 2007
Città: quel ramo del lago di como, che volge a mezzogiorno... ^^
Messaggi: 19625
|
ma devi farlo "a caso"? nel senso, qualsiasi file siano, puoi rinominarli con un numero incrementale?
__________________
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: May 2005
Messaggi: 8694
|
Codice:
: x_Master_x @ECHO OFF SETLOCAL ENABLEDELAYEDEXPANSION SET numero_file=10 SET cartella=C:\Test Prova SET nome_destinazione=Nome Cartella SET n=1 SET nf=0 FOR %%f IN ("!cartella!\*.*") DO ( IF !n!==1 ( SET /A nf+=1 MD "!cartella!\!nome_destinazione!!nf!" ) MOVE /Y "%%f" "!cartella!\!nome_destinazione!!nf!" IF !n!==!numero_file! ( SET n=1 ) ELSE ( SET /A n+=1 ) ) ENDLOCAL ECHO OPERAZIONE COMPLETATA PAUSE EXIT 1) Scegli la cartella ( nell'esempio C:\Test Prova, le sottocartelle non verranno incluse* ) 2) Scegli il nome della cartella di destinazione ( il numero è incrementale, quindi da Nome Cartella diventerà Nome Cartella1, Nome Cartella2, Nome Cartella3 etc. nella stessa posizione di C:\Test Prova ) 3) Suddividere per estensione ( nell'esempio è !cartella!\*.* quindi tutti i file, lo puoi cambiare con !cartella!\*.txt per i soli file di testo ) 4) Suddividere per il nome ( es. !cartella!\test*.txt cercherà tutti i file che iniziano per "test" ed hanno estensione .txt, oppure *test*.txt includerà tutti i file che hanno nel nome la parola "test". Altre combinazioni di Wildcard le trovi su Google perchè non ho voglia di stare qui a spiegarle tutte ![]() 5) Suddividere per numero ( nell'esempio numero_file=10, quindi ogni cartella conterrà 10 file ) Ti consiglio di fare alcune prove prima di buttarti sulla cartella con 400.000 files ed eventualmente fare un backup, se hai bisogno di altre caratteristiche usa un programma apposito. *Versione per includere tutti i file delle sottocartelle ( N.B. La struttura originaria non verrà mantenuta! ) Codice:
: x_Master_x @ECHO OFF SETLOCAL ENABLEDELAYEDEXPANSION SET numero_file=10 SET cartella=C:\Test Prova SET nome_destinazione=Nome Cartella SET n=1 SET nf=0 FOR /R "%cartella%" %%F IN (*.*) DO ( SET "escludi_cartella=%%~pF" IF "%%~pF"=="!escludi_cartella:%nome_destinazione%=!" ( IF !n!==1 ( SET /A nf+=1 MD "!cartella!\!nome_destinazione!!nf!" ) MOVE /Y "%%F" "!cartella!\!nome_destinazione!!nf!" ) IF !n!==!numero_file! ( SET n=1 ) ELSE ( SET /A n+=1 ) ) ENDLOCAL ECHO OPERAZIONE COMPLETATA PAUSE EXIT
__________________
. Thread Ufficiali: EasyCrypt ~ Old Files Manager ~ OSD Clock The real me is no match for the legend . Ultima modifica di x_Master_x : 08-04-2013 alle 13:30. |
![]() |
![]() |
![]() |
#6 | |
Member
Iscritto dal: Dec 2007
Messaggi: 195
|
Quote:
x_Master_x Scusa l'ignoranza, ma meglio chiedere prima di far danni... Io devo modificare solamente la prima parte dove dice "SET .... "? oltre a sostituire la seconda parte di codice visto che mi interessano anche le sottocartelle... per es. SET cartella=C:\Test\ quindi FOR %%f IN (!cartella!\*.*) DO ( diventerà FOR %%f IN (C:\Test\\*.*) DO ( corretto? EDIT: ho lanciato questo script: Codice:
: x_Master_x @ECHO OFF SETLOCAL ENABLEDELAYEDEXPANSION SET numero_file=10 SET cartella=C:\Divers SET nomedestinazione=NomeCartella SET n=1 SET nf=0 FOR /R %cartella% %%F in (*.*) DO ( IF !n!==1 ( SET /A nf+=1 MD !cartella!\!nomedestinazione!!nf! ) MOVE /Y "%%F" !cartella!\!nomedestinazione!!nf! IF !n!==!numero_file! ( SET n=1 ) ELSE ( SET /A n+=1 ) ) ENDLOCAL ECHO OPERAZIONE COMPLETATA PAUSE EXIT ![]() mi ha diviso i vari file (tra cui il .bat stesso) nelle varie sottocartelle però nel farlo mi ha creato 999 cartelle vuote ovvero dalla NomeCartella1 fino alla NomeCartella999 cominciando ad inserire file dalla NomeCartella1000 in poi.... da cosa può dipendere questo problema? p.s. grazie 10000 per lo script ![]()
__________________
NUC10i7
MEM: Crucial DDR4 2x16GB 2400 MHz - HD1: Samsung 970 EVO Plus 1TB - HD2: Samsung SSD 850 EVO 500GB Ultima modifica di [EtErNiTy] : 07-04-2013 alle 16:57. |
|
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: May 2005
Messaggi: 8694
|
Non mettere il .bat nella stessa cartella dove operi, potrebbe andare in conflitto...
Le uniche cose da modificare sono le variabili ( SET ) Il percorso deve avere la \ alla fine come da esempio, quindi C:\Divers\ Se il percorso ha degli spazi devi modificare %cartella% in "%cartella%", ho editato il post. Per la questione delle cartella 1000 non sò da cosa dipenda ( EDIT: Credo che dipenda dalla \ che non hai inserito alla fine della path ), ho provato con un centiaio di cartelle e non ho avuto problemi.
__________________
. Thread Ufficiali: EasyCrypt ~ Old Files Manager ~ OSD Clock The real me is no match for the legend . Ultima modifica di x_Master_x : 07-04-2013 alle 18:45. |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: May 2005
Messaggi: 8694
|
Ho editato entrambi gli script, ho risolto il problema delle path con spazio e delle cartelle vuote in caso si usi lo script che controlla le sottocartelle.
__________________
. Thread Ufficiali: EasyCrypt ~ Old Files Manager ~ OSD Clock The real me is no match for the legend . |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:56.