|
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. | NEI PREFERITI | .:: | RSS Forum | RSS News | NEWS web | NEWS software | |
| PUBBLICITA' | | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | | CERCA nel FORUM » | |
20-02-2016, 22.06.28 | #1 |
Gold Member
WT Expert
Registrato: 23-06-2004
Loc.: Cagliari
Messaggi: 13.333
|
Script batch per copia e catalogazione
Al che mi son detto: metti il caso che qualche buon samaritano qui su WT possa darmi una manina... Vediamo quindi di riassumere la situazione: Per motivi di spazio, non posso copiare dei dati dal disco principale a quello di backup, per cui la geniale soluzione è stata quella di copiare solo la struttura delle directory e i file di piccole dimensioni, sostituendo quelli più grandi. Pensavo quindi ad una cosa di questo tipo: - piazzo il file batch da qualche parte e questo agisce sulla directory corrente e su tutte le sottodirectory - usa xcopy per copiare - tra le variabili del file, stabilisco una dimensione massima per i file che devono essere copiati - avviato lo script, inizia la copia Ora, i punti da decidere sono due: 1) cosa fare con i file grandi 2) gestire eventualmente utilizzi successivi 1) I file grandi Fondamentalmente, pensavo ad alcune soluzioni: - anzichè copiare il file, crearne uno con lo stesso nome ma vuoto - come sopra, ma contenente all'interno i dati del file originale (tipo dimensione, data, e qualsiasi altra cosa possa essere utile, pochi dati comunque). Ovviamente questa soluzione è preferibile alla prima. - un file di testo con .txt aggiunto dopo il nome del file (quindi miofile.png diventerebbe miofile.png.txt) - come sopra, con in più i dati - creare un file di testo (mancanti.txt) contenente la lista dei file non copiati - come sopra, ma contenente sia la lista che alcune caratteristiche 2) Riuso del batch Un riuso del batch ovviamente implicherebbe il conflitto tra i file già copiati e il nuovo flusso di copia. Come gestirlo? - non lo gestisco, i nuovi file sovrascrivono i vecchi. Facile, ma decisamente poco ottimizzato. - copio solo i file nuovi. Non difficile, ma rischio di tenermi roba vecchia. - copio i file nuovi e controllo i vecchi, se i nuovi sono più recenti (o semplicemente diversi) li sostituisco, altrimenti non faccio nulla. Qualcuno vuole cimentarsi nell'impresa?
___________________________________
La risposta è dentro di te... e però, è sbagliata! |
22-02-2016, 14.23.07 | #2 |
Gold Member
WT Expert
Registrato: 23-06-2004
Loc.: Cagliari
Messaggi: 13.333
|
Rif: Script batch per copia e catalogazione
Mi sa che ho chiesto troppo eh!
In alternativa un programma portable di sincronizzazione che permetta di fare lo stesso?
___________________________________
La risposta è dentro di te... e però, è sbagliata! |
22-02-2016, 17.14.30 | #3 |
Gold Member
WT Expert
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
|
Rif: Script batch per copia e catalogazione
Perchè xcopy e non copy ?
Da quel che mi pare di capire, dovresti ricreare la sottostruttura delle cartelle in modo ricorsivo, per ogni file incluso nelle sottocartelle verificarne la dimensione, acquisirne alcune caratteristiche, scrivere un file sostitutivo dell'originale oppure copiare l'originale... Certo che xcopy ti consentirebbe di creare un percorso come .\a\b\c, mentre con copy saresti costretto a lanciare md a, md .\a\b, md .\a\b\c...
___________________________________
Practice feeds Skill,Skill limits Failure,Failure enhances Security,Security needs Practice |
23-02-2016, 01.03.49 | #4 |
Gold Member
WT Expert
Registrato: 23-06-2004
Loc.: Cagliari
Messaggi: 13.333
|
Rif: Script batch per copia e catalogazione
Grazie LoryOne.
Esatto. XCopy ha qualche funzionalità in più, l'ho usato per fare qualche altro scriptino e fa il suo dovere. Naturalmente non è un dogma, se si vede che lo script lavora meglio con altri comandi, non c'è ragione per non usarli.
___________________________________
La risposta è dentro di te... e però, è sbagliata! |
23-02-2016, 09.51.12 | #5 |
Gold Member
WT Expert
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
|
Rif: Script batch per copia e catalogazione
...Infatti pensavo ad una cosa del genere:
Codice:
Echo off set "filename=\*.*" for %%A in (%filename%) do ( echo.Il nome file completo e' %%~fA echo.Il nome del file e' %%~nA echo.Il suo percorso e' %%~pA echo.Il suo attributo temporale e' %%~tA echo.La sua estensione e' %%~xA echo.La dimensione di "%%A" e' %%~zA bytes )
___________________________________
Practice feeds Skill,Skill limits Failure,Failure enhances Security,Security needs Practice |
23-02-2016, 10.16.06 | #6 |
Gold Member
WT Expert
Registrato: 23-06-2004
Loc.: Cagliari
Messaggi: 13.333
|
Rif: Script batch per copia e catalogazione
Grazie!
Per la ricorsività come pensi di risolvere? Manualmente?
___________________________________
La risposta è dentro di te... e però, è sbagliata! |
23-02-2016, 10.25.11 | #7 |
Gold Member
WT Expert
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
|
Rif: Script batch per copia e catalogazione
No.
C'è un altro for solo sulle sottodirectories che recupera 'dir \ /s /b /ad /on' Ogni singola voce recuperata da dir ordinata per nome, passa alla creazione della cartella, poi allo script precedente per la lista dei files... In questo modo, visto che è su proprietà di alcuni dei files che vuoi agire, si ha uno script che compie una scrematura sul contenuto in base alle tue esigenze ed in modo ricorsivo
___________________________________
Practice feeds Skill,Skill limits Failure,Failure enhances Security,Security needs Practice |
23-02-2016, 18.25.03 | #8 |
Gold Member
WT Expert
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
|
Rif: Script batch per copia e catalogazione
Codice:
@echo off for /f "tokens=*" %%A in ('dir \ /s /b /ad /on') do ( for %%B in ("%%A\*.*") do ( if %%~zB gtr 5000000 ( echo.Cartella %%A echo.Il nome file completo e' %%~fB echo.La sua dimensione e' %%~zB bytes ) ) )
___________________________________
Practice feeds Skill,Skill limits Failure,Failure enhances Security,Security needs Practice |
23-02-2016, 20.41.55 | #9 |
Gold Member
WT Expert
Registrato: 23-06-2004
Loc.: Cagliari
Messaggi: 13.333
|
Rif: Script batch per copia e catalogazione
Sta procedendo vedo!
Occhio che in questo modo però estrapola i percorsi di tutta l'unità, non solo quelli della directory corrente e sottodirectory. Dovresti mettere . al posto di \ nel comando del for. Piuttosto nel secondo for stai filtrando le directory con quell' *.* o sbaglio? Ci potrebbero essere directory con il punto nel nome e file senza estensione. mi sa che bisogna filtrare in base all'attributo.
___________________________________
La risposta è dentro di te... e però, è sbagliata! |
23-02-2016, 20.49.36 | #10 |
Forum supporter
Global Moderator
Registrato: 23-08-2007
Messaggi: 2.704
|
Rif: Script batch per copia e catalogazione
Io ho usato powershell...
In $Destinazione metterai la cartella di destinazione. In $DimensioneMassimaDeiFile metterai la dimensione massima che preferisci (in byte). Poi piazzi il file .ps1 nella cartella desiderata e lo fai partire. Pare funzionare, ma mi modifica il nome di tre file nella cartella di destinazione. Quindi qualche errore c'è!
___________________________________
Ultima modifica di xilo76 : 24-02-2016 alle ore 07.23.58 |
23-02-2016, 21.05.54 | #11 | ||
Gold Member
WT Expert
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
|
Rif: Script batch per copia e catalogazione
Quota:
Al posto del '\' ci andrà un parametro da riga di comando, oppure una variabile che imposterai con un set... Non so esattamente cosa ne vorrai fare, ma da quel che ho capito tutto ruota attorno ai files contenuti in cartelle. Quota:
Si può usare anche un xcopy /L, però alla fine mostra una riga che non c'entra nulla,mentre con dir /b vai sul sicuro.
___________________________________
Practice feeds Skill,Skill limits Failure,Failure enhances Security,Security needs Practice |
||
24-02-2016, 00.18.06 | #12 |
Gold Member
WT Expert
Registrato: 23-06-2004
Loc.: Cagliari
Messaggi: 13.333
|
Rif: Script batch per copia e catalogazione
Per il primo punto, sostituire / con . dovrebbe essere sufficiente.
Per il secondo... sicuramente potrebbe funzionare con un "if", però forse si risolve più facilmente con il giusto parametro del comando. Secondo te conviene strutturare lo script in due parti (prima creo i percorsi, poi copio i contenuti), oppure si fa tutto in uno?
___________________________________
La risposta è dentro di te... e però, è sbagliata! |
24-02-2016, 09.08.19 | #13 |
Gold Member
WT Expert
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
|
Rif: Script batch per copia e catalogazione
Secondo me dovresti iniziare copiando il solo contenuto della cartella e poi quello delle sottocartelle.
Così com'è strutturato, però, presenta un problema: Se non figurano cartelle in quella che passi come parametro, lo script non fa nulla. C'è qundi da usare un "for %%B in ("%1\*.*") do ..." prima di tutto. I files in enumerazione hanno tutti l'attributo archive attivo (non directory), quindi anche se non presentano estensione vengono presi in considerazione. Basterebbe un "attrib +h nomefile" per non enumerarlo, ma non so se devi prendere in esame anche questa casistica specifica. In ogni caso, con dir agisci come meglio credi.
___________________________________
Practice feeds Skill,Skill limits Failure,Failure enhances Security,Security needs Practice |
25-02-2016, 02.01.58 | #14 |
Gold Member
WT Expert
Registrato: 23-06-2004
Loc.: Cagliari
Messaggi: 13.333
|
Rif: Script batch per copia e catalogazione
Vero, in effetti il primo for elenca le sottocartelle, quindi per la cartella principale occorrerà gestire un for per i file a parte.
Non ti seguo bene sulla questione attributi, devo un attimo vedere come funziona il comando. @xilo Ti ho risposto per messaggio privato!
___________________________________
La risposta è dentro di te... e però, è sbagliata! |
25-02-2016, 15.26.54 | #15 |
Gold Member
WT Expert
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
|
Rif: Script batch per copia e catalogazione
Funziona così, ma verifica pure, ci mancherebbe !
Supponiamo che nella cartella Numeri siano presenti: una cartella Uno, un file Uno.cifra ed un file due Numeri |------>Uno |------>Uno.cifra |------>due L'enumerazione elencherà Uno.cifra e due, scartando Uno perchè directory Modificando l'attributo di due con hidden (attrib +h due), due non verrà più elencato. Esempio: Codice:
cd \ C:\>attrib C:\123.tif A SHR C:\BOOT.INI A SHR C:\Bootfont.bin A SH C:\BOOTSECT.DOS A C:\CONFIG.SYS H C:\IO.SYS A SHR C:\MSDOS.SYS A SHR C:\NTDETECT.COM A SHR C:\ntldr A SH C:\pagefile.sys C:\SYSLEVEL.IBM Il nome file completo e' C:\123.tif Il nome file completo e' C:\CONFIG.SYS Il nome file completo e' C:\SYSLEVEL.IBM Prende in esame combinazione attributo nullo, A,R. Forse S, sicuramente non H.
___________________________________
Practice feeds Skill,Skill limits Failure,Failure enhances Security,Security needs Practice |
Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti) | |
|
|
Discussioni simili | ||||
Discussione | Autore discussione | Forum | Risposte | Ultimo messaggio |
Spostare script di "backup" da windows a linux | coguaro | Linux e altri Sistemi Operativi | 8 | 06-08-2013 21.27.56 |
Help: script o batch per automatizzare..... | TNOTB | Programmazione | 3 | 20-10-2008 10.19.28 |
script batch per creare playlist | everett | Programmazione | 0 | 15-07-2008 18.55.25 |
Batch Script particolare | gutguy | Windows 9x/Me/NT4/2000 | 1 | 28-07-2004 18.38.54 |
vecchi trucchi ma su xp? | top gun | Windows 7/Vista/XP/ 2003 | 13 | 02-03-2004 11.31.48 |