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: 23
Iscritto il: sab lug 16, 2016 7:42 pm

Batch sposta file

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

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
Moderatore
Moderatore
Messaggi: 1431
Iscritto il: sab nov 01, 2014 3:50 pm

Re: Batch sposta file

Messaggio da PippoDJ » mer ott 11, 2017 2:58 pm

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: 23
Iscritto il: sab lug 16, 2016 7:42 pm

Re: Batch sposta file

Messaggio da aik01 » mer ott 11, 2017 3:11 pm

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
Moderatore
Moderatore
Messaggi: 1431
Iscritto il: sab nov 01, 2014 3:50 pm

Re: Batch sposta file

Messaggio da PippoDJ » mer ott 11, 2017 5:49 pm

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: 23
Iscritto il: sab lug 16, 2016 7:42 pm

Re: Batch sposta file

Messaggio da aik01 » mer ott 11, 2017 6:04 pm

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
Moderatore
Moderatore
Messaggi: 1431
Iscritto il: sab nov 01, 2014 3:50 pm

Re: Batch sposta file

Messaggio da PippoDJ » gio ott 12, 2017 11:47 am

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: 23
Iscritto il: sab lug 16, 2016 7:42 pm

Re: Batch sposta file

Messaggio da aik01 » gio ott 12, 2017 10:32 pm

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: 23
Iscritto il: sab lug 16, 2016 7:42 pm

Re: Batch sposta file

Messaggio da aik01 » sab ott 14, 2017 3:53 pm

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
Moderatore
Moderatore
Messaggi: 1431
Iscritto il: sab nov 01, 2014 3:50 pm

Re: Batch sposta file

Messaggio da PippoDJ » sab ott 14, 2017 5:41 pm

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: 23
Iscritto il: sab lug 16, 2016 7:42 pm

Re: Batch sposta file

Messaggio da aik01 » lun ott 16, 2017 8:39 am

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
Moderatore
Moderatore
Messaggi: 1431
Iscritto il: sab nov 01, 2014 3:50 pm

Re: Batch sposta file

Messaggio da PippoDJ » lun ott 16, 2017 10:31 am

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: 23
Iscritto il: sab lug 16, 2016 7:42 pm

Re: Batch sposta file

Messaggio da aik01 » lun ott 16, 2017 10:07 pm

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: 23
Iscritto il: sab lug 16, 2016 7:42 pm

Re: Batch sposta file

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

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