Batch sposta file

Se Windows genera un errore, hai un problema di virus o vuoi discutere/segnalare l'uscita della nuova versione di un software per la piattaforma Microsoft, questa è la sezione giusta.
Regole del forum
Rispondi
Avatar utente
aik01
Livello: EPROM (2/15)
Livello: EPROM (2/15)
Messaggi: 24
Iscritto il: sab lug 16, 2016 7:42 pm

Batch sposta file

Messaggio da aik01 »

Ciao ragazzi,
dovrei creare un batch che su un server locale X: che abbia sottocartelle X:\folder\folder2 etc.
prenda tutti i file presenti in X:\folder\folder2\folder3\folder4\PROGETTO con data creazione > 90gg e li sposti in una cartella X:\folder\folder2\folder3\folder4\PROGETTO\OLD
avete qualche cosa dalla quale si possa partire?
System
System
Bot ufficiale TurboLab.it
Bot
Messaggi:
Iscritto il: sab dic 31, 2016 6:19 pm
Contatta: Contatta

Re: Batch sposta file

Messaggio da System » mer ott 11, 2017 1:58 pm


Avatar utente
PippoDJ
Livello: Storage Area Network (12/15)
Livello: Storage Area Network (12/15)
Messaggi: 1678
Iscritto il: sab nov 01, 2014 3:50 pm

Re: Batch sposta file

Messaggio da PippoDJ »

Ciao aik01,

Codice: Seleziona tutto

FORFILES /P X:\folder\folder2\folder3\folder4\PROGETTO /D -90 /C "cmd /c move @file X:\folder\folder2\folder3\folder4\PROGETTO\OLD"
dove:
  • /P = il percorso in cui deve essere effettuata la ricerca dei file,
  • /D = l'età dei file espressa in giorni,
  • /C = il comando da eseguire per ogni elemento della lista di file [@file] risultante in base al criterio di ricerca, racchiuso tra virgolette.
N.B. 1: La ricerca viene effettuata solo tra i file presenti nella cartella indicata dal percorso, non nelle sottocartelle.
N.B. 2: La data di riferimento per la ricerca non è quella di "creazione", ma quella di "ultima modifica".

Ciao, Pippo.
Avatar utente
aik01
Livello: EPROM (2/15)
Livello: EPROM (2/15)
Messaggi: 24
Iscritto il: sab lug 16, 2016 7:42 pm

Re: Batch sposta file

Messaggio da aik01 »

Ciao Pippo,
ho un'alberatura di questo tipo:
X:\folder1\folder2 fisse mentre folder3\folder4 possono cambiare pensi si possa fare qualcosa di automatico?

tipo:
x:\città\quartiere\via_rossi\numero1\FAMIGLIA
x:\città\quartiere\via_blu\numero21\FAMIGLIA
x:\città\quartiere\via_blu\numero55\FAMIGLIA
x:\città\quartiere\via_blu\numero78\FAMIGLIA
x:\città\quartiere\via_neri\numero22\FAMIGLIA
Avatar utente
PippoDJ
Livello: Storage Area Network (12/15)
Livello: Storage Area Network (12/15)
Messaggi: 1678
Iscritto il: sab nov 01, 2014 3:50 pm

Re: Batch sposta file

Messaggio da PippoDJ »

Sì certo, si può fare, ma in questo caso diventa più semplice ricorrere a ROBOCOPY:

Codice: Seleziona tutto

ROBOCOPY /S x:\città\quartiere\ x:\città\quartiere_OLD\ /MINAGE:90 /MOVE
dove:
  • /S = attiva l'opzione di ricerca dei file anche nelle sottocartelle,
  • /MINAGE: = l'età minima dei file su cui intervenire espressa in giorni,
  • /MOVE = attiva l'operazione di "spostamento" invece della "copia".
N.B.: In questo caso è importante che la cartella OLD non sia una sottocartella del percorso base (come avevi ipotizzato nel primo post), altrimenti verrebbe sottoposta anch'essa allo spostamento dopo 90 giorni dalla creazione con risultati... imprevedibili.

Ciao, Pippo.
Avatar utente
aik01
Livello: EPROM (2/15)
Livello: EPROM (2/15)
Messaggi: 24
Iscritto il: sab lug 16, 2016 7:42 pm

Re: Batch sposta file

Messaggio da aik01 »

Ciao Pippo, mi spiego meglio (probabilmente non l'ho fatto prima:
x:\città\quartiere\via_rossi\numero1\FAMIGLIA contiene N file di cui N-10 con ultima modifica > 90
x:\città\quartiere\via_blu\numero21\FAMIGLIA contiene N file di cui N-10 con ultima modifica > 90
x:\città\quartiere\via_blu\numero55\FAMIGLIA contiene N file di cui N-10 con ultima modifica > 90
x:\città\quartiere\via_blu\numero78\FAMIGLIA contiene N file di cui N-10 con ultima modifica > 90
x:\città\quartiere\via_neri\numero22\FAMIGLIA contiene N file di cui N-10 con ultima modifica > 90

questo quello atteso:
x:\città\quartiere\via_rossi\numero1\FAMIGLIA contiene N-10 file
x:\città\quartiere\via_rossi\numero1\FAMIGLIA\OLD contiene 10 con ultima modifica > 90
==============================================================================
x:\città\quartiere\via_blu\numero21\FAMIGLIA contiene N-10 file
x:\città\quartiere\via_blu\numero21\FAMIGLIA\OLD contiene 10 con ultima modifica > 90
==============================================================================


grazie ancora :)
Avatar utente
PippoDJ
Livello: Storage Area Network (12/15)
Livello: Storage Area Network (12/15)
Messaggi: 1678
Iscritto il: sab nov 01, 2014 3:50 pm

Re: Batch sposta file

Messaggio da PippoDJ »

La faccenda si complica parecchio... soprattutto a causa di questo:
PippoDJ ha scritto:N.B.: In questo caso è importante che la cartella OLD non sia una sottocartella del percorso base (come avevi ipotizzato nel primo post), altrimenti verrebbe sottoposta anch'essa allo spostamento dopo 90 giorni dalla creazione con risultati... imprevedibili.
diventa necessario impostare un ciclo sulle sottocartelle e filtrare solo i percorsi che terminano con "FAMIGLIA".

Questa una possibile soluzione:

Codice: Seleziona tutto

FOR /F %%A IN ('dir /B /S /AD x:\città\quartiere\') DO CALL :sposta %%A
:sposta
SET B=%1
IF /I FAMIGLIA==%B:~-8% ( ROBOCOPY %1 %1\OLD\ /MINAGE:90 /MOVE)
:END
Ciao, Pippo.
Avatar utente
aik01
Livello: EPROM (2/15)
Livello: EPROM (2/15)
Messaggi: 24
Iscritto il: sab lug 16, 2016 7:42 pm

Re: Batch sposta file

Messaggio da aik01 »

grazie mille della dritta domani la provo subito! Un info... partendo da zero come potrei imparare a costruire da solo questi batch? Vedo anche che è utilizzato pure powershell (non vorrei andare in OT ma è una curiosità)
Avatar utente
aik01
Livello: EPROM (2/15)
Livello: EPROM (2/15)
Messaggi: 24
Iscritto il: sab lug 16, 2016 7:42 pm

Re: Batch sposta file

Messaggio da aik01 »

ciao Pippo,
ho provato il batch eseguendo un check pre-post lancio estraendo la lista delle cartelle dell'albero tramite DIR /A:d /B /S *.* > estrai.txt - idee?
Avatar utente
PippoDJ
Livello: Storage Area Network (12/15)
Livello: Storage Area Network (12/15)
Messaggi: 1678
Iscritto il: sab nov 01, 2014 3:50 pm

Re: Batch sposta file

Messaggio da PippoDJ »

aik01 ha scritto:ho provato il batch eseguendo un check pre-post lancio estraendo la lista delle cartelle dell'albero tramite DIR /A:d /B /S *.* > estrai.txt - idee?
Scusa, ma quale sarebbe la domanda? :s
Avatar utente
aik01
Livello: EPROM (2/15)
Livello: EPROM (2/15)
Messaggi: 24
Iscritto il: sab lug 16, 2016 7:42 pm

Re: Batch sposta file

Messaggio da aik01 »

ho estratto l'alberatura delle cartelle con il comando: DIR /A:d /B /S *.* > estrai.txt

Ho poi lanciato il batch che mi avevi indicato e nuovamente il comando sopra per vedere se l'alberatura:
x:\città\quartiere\via_rossi\numero1\FAMIGLIA
conteneva x:\città\quartiere\via_rossi\numero1\FAMIGLIA\OLD
anche dove mi aspettassi che la cartella OLD fosse visibile - volevo chiederti se il codice del batch ti tornava o se magari ci fosse stato un errore da qualche parte;

Grazie
Avatar utente
PippoDJ
Livello: Storage Area Network (12/15)
Livello: Storage Area Network (12/15)
Messaggi: 1678
Iscritto il: sab nov 01, 2014 3:50 pm

Re: Batch sposta file

Messaggio da PippoDJ »

Ottieni qualche messaggio di errore?

Ad ogni modo, con tutta probabilità, il problema è nel carattere accentato presente nel percorso di base [x:\città\quartiere\].

Usare caratteri accentati nei nomi di file e cartelle è sempre una pessima idea: quindi il consiglio è di rinominare la cartella "città" in "citta" e modificare il batch di conseguenza.
Se non è possibile farlo senza compromettere il funzionamento di altre applicazioni coinvolte, prova a cambiare la tabella dei codici ANSI aggiungendo all'inizio del batch il comando CHCP 1252:

Codice: Seleziona tutto

CHCP 1252
FOR /F %%A IN ('dir /B /S /AD x:\città\quartiere\') DO CALL :sposta %%A
:sposta
SET B=%1
IF /I FAMIGLIA==%B:~-8% ( ROBOCOPY %1 %1\OLD\ /MINAGE:90 /MOVE)
:END
Ciao, Pippo.

P.S.: Quando tutto funziona, il batch crea una cartella OLD sotto ogni cartella di nome FAMIGLIA, a prescindere che quest'ultima contenga file da spostare più vecchi di 90 giorni o no.
Avatar utente
aik01
Livello: EPROM (2/15)
Livello: EPROM (2/15)
Messaggi: 24
Iscritto il: sab lug 16, 2016 7:42 pm

Re: Batch sposta file

Messaggio da aik01 »

Ciao Pippo,
ti ringrazio, l'esempio che ti avevo riportato era solo un esempio - correttamente però città con l'accento era fuorviante :)
Domani rifaccio un giro e ti dico!
Avatar utente
aik01
Livello: EPROM (2/15)
Livello: EPROM (2/15)
Messaggi: 24
Iscritto il: sab lug 16, 2016 7:42 pm

Re: Batch sposta file

Messaggio da aik01 »

Già testato.... grande! :)!
System
System
Bot ufficiale TurboLab.it
Bot
Messaggi:
Iscritto il: sab dic 31, 2016 6:19 pm
Contatta: Contatta

Re: Re: Batch sposta file

Messaggio da System » lun ott 16, 2017 10:28 pm


Rispondi
  • Argomenti simili
    Risposte
    Visite
    Ultimo messaggio