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.
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?
/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,
ho un'alberatura di questo tipo:
X:\folder1\folder2 fisse mentre folder3\folder4 possono cambiare pensi si possa fare qualcosa di automatico?
/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, 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
==============================================================================
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".
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à)
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?
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?
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;
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:
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.
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!
Inserendo un messaggio, dichiari di aver letto e accettato il regolamento di partecipazione.
Nello specifico, sei consapevole che ti stai assumendo personalmente la totale responsabilità delle tue affermazioni, anche in sede civile e/o penale,
manlevando i gestori di questo sito da ogni coinvolgimento e/o pretesa di rivalsa.
Dichiari inoltre di essere consapevole che il messaggio sarà visibile pubblicamente, accetti di diffonderlo con licenza
CC BY-NC-SA 3.0 (con attribuzione a "TurboLab.it") e rinunci ad ogni forma di compensazione (economica o altro).
Rinunci inoltre esplicitamente a qualsiasi pretesa di cancellazione del messaggio.