View Full Version : BATCH: Aiuto per eliminazione file
riccardospurinisi87
28-10-2019, 12:46
Ciao a tutti, ho la necessità di fare uno script sul mio server in cui devo cancellare dei file sulla sorgente, una volta riscontrato che sono presenti anche nella destinazione.
Praticamente la struttura è questa:
Ho una cartella in C:\registrazioni\ che contiene tutte cartelle con il numero di telefono dentro le quali ci sono tutte le registrazioni che vengono fatte.
La struttura completa è la seguente:
C:\registrazioni\145\t2341424.wav
C:\registrazioni\147\t2341425.wav
I numeri di telefono, e quindi le cartelle sono circa 350 cartelle.
Questi file vengono allo stesso tempo copiati in una directory con la seguente struttura
D:\registrazionit\data\numero_telefono\file.wav
Prima di cancellare i file nella sorgente, devo avere la certezza che i file *.wav devono essere copiati nella cartella D:\registrazionit\data\numero_telefono\file.wav.
Non riesco a pensare come poter fare questo script e il problema è che non ho molta conoscenza dei possibili comandi per farlo.
Qualcuno mi sa aiutare?
Grazie mille
Come dicono qua https://stackoverflow.com/questions/23207590/powershell-remove-item-if-file-already-exists-after-copy-item sembra tu reinventi la ruota.
Con powershell comando Move-item (https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/move-item?view=powershell-6 )
Move-Item -Path C:\registrazioni\ -Destination D:\registrazioni\
Vedo però che la struttura differisce tra sorgente e destinazione.
Puoi spiegarla meglio ?
riccardospurinisi87
28-10-2019, 16:25
Come dicono qua https://stackoverflow.com/questions/23207590/powershell-remove-item-if-file-already-exists-after-copy-item sembra tu reinventi la ruota.
Con powershell comando Move-item (https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/move-item?view=powershell-6 )
Move-Item -Path C:\registrazioni\ -Destination D:\registrazioni\
Vedo però che la struttura differisce tra sorgente e destinazione.
Puoi spiegarla meglio ?
Ciao Kaya,
grazie mille.
La struttura tra sorgente e destinazione è differente:
La sorgente ha questa struttura:
C:\REGISTRSAZIONI\numero_telefono\*.wav
La destinazione ha questa struttura:
D:\REGISTRAZIONIT\data\numero_telefono\*.wav
Io ho la necessità di vedere che tutte le registrazioni dentro C:\REGISTRSAZIONI\numero_telefono\*.wav siano presenti dentro le cartelle presenti in D:\REGISTRAZIONIT\data\numero_telefono\*.wav
Soltanto che mi resta difficile perché nella sorgente vengono registrate tutte le telefonate di tutti i giorni, e quindi dentro una cartella numero_telefono posso trovare anche telefonate di 4 mesi fa, mentre nella destinazione, la cartella "data" viene creata quotidianamente e vengono copiate le registrazioni del giorno stesso, quindi dovrei:
1) confrontare tutte le registrazioni presenti dentro le cartelle C:\REGISTRSAZIONI\numero_telefono con tutte quelle presenti in D:\REGISTRAZIONIT\data\numero_telefono\
2) quando vengono trovate le stesse telefonate tra la sorgente e la destinazione, il programma cancella le telefonate sulla sorgente.
Spero di non aver fatto ancora più confusione.
Grazie mille
[CUT] mentre nella destinazione, la cartella "data" viene creata quotidianamente e vengono copiate le registrazioni del giorno stesso, quindi dovrei:
[CUT]
Scusa ma non puoi agire in questo punto, e modificare lo script anzichè usare il comando copy, faccia un moveItems ?
Altrimenti per essere sicuro dovresi fare un controllo che i files siano identici prima di cancellare, non basta il nome...
riccardospurinisi87
28-10-2019, 17:05
Scusa ma non puoi agire in questo punto, e modificare lo script anzichè usare il comando copy, faccia un moveItems ?
Altrimenti per essere sicuro dovresi fare un controllo che i files siano identici prima di cancellare, non basta il nome...
Inizialmente il programmatore lo avevo fatto ma poi si perdevano un sacco di registrazioni e per questo era stato tolto ed ora vorrei rimediare altrimenti.
Evidentemente se si perdevano registrazioni, il problema è come è fatto lo script.
Quindi io personalmente tornerei ad analizzare lo script originario.
Se proprio proprio ti piacciono davvero le cose complicate, ti serve uno script che faccia search, compare and delete.
Ad esempio: http://www.readonlymaio.org/rom/2017/10/09/finding-duplicated-identical-files-with-powershell-the-fast-way/ (se noti c'è la versione sia per spostare i file duplicati che quella per elimnare): ovviamente dovrai adattarla un pelino affinche faccia il "list" in entrambe le cartelle, ma è roba easy.
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.