Telefonino.net network
 
| 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 » |

Torna indietro   WinTricks Forum > Software > Programmazione

Notices

Rispondi
 
Strumenti discussione
Vecchio 20-02-2016, 21.06.28   #1
borgata
Gold Member
WT Expert
 
L'avatar di borgata
 
Registrato: 23-06-2004
Loc.: Cagliari
Messaggi: 13.121
borgata è un gioiello raroborgata è un gioiello raroborgata è un gioiello raroborgata è un gioiello raro
Script batch per copia e catalogazione

Mi serve un piccolo script batch, normalmente lo farei da solo ma questo è un periodo un po' pieno e sto continuamente rimandando.
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!
borgata non è collegato   Rispondi citando
Vecchio 22-02-2016, 13.23.07   #2
borgata
Gold Member
WT Expert
 
L'avatar di borgata
 
Registrato: 23-06-2004
Loc.: Cagliari
Messaggi: 13.121
borgata è un gioiello raroborgata è un gioiello raroborgata è un gioiello raroborgata è un gioiello raro
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!
borgata non è collegato   Rispondi citando
Vecchio 22-02-2016, 16.14.30   #3
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.395
LoryOne ha un'aura spettacolareLoryOne ha un'aura spettacolareLoryOne ha un'aura spettacolare
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
LoryOne non è collegato   Rispondi citando
Vecchio 23-02-2016, 00.03.49   #4
borgata
Gold Member
WT Expert
 
L'avatar di borgata
 
Registrato: 23-06-2004
Loc.: Cagliari
Messaggi: 13.121
borgata è un gioiello raroborgata è un gioiello raroborgata è un gioiello raroborgata è un gioiello raro
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!
borgata non è collegato   Rispondi citando
Vecchio 23-02-2016, 08.51.12   #5
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.395
LoryOne ha un'aura spettacolareLoryOne ha un'aura spettacolareLoryOne ha un'aura spettacolare
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
)
...quasi fatto
___________________________________

Practice feeds Skill,Skill limits Failure,Failure enhances Security,Security needs Practice
LoryOne non è collegato   Rispondi citando
Vecchio 23-02-2016, 09.16.06   #6
borgata
Gold Member
WT Expert
 
L'avatar di borgata
 
Registrato: 23-06-2004
Loc.: Cagliari
Messaggi: 13.121
borgata è un gioiello raroborgata è un gioiello raroborgata è un gioiello raroborgata è un gioiello raro
Rif: Script batch per copia e catalogazione

Grazie!
Per la ricorsività come pensi di risolvere? Manualmente?
___________________________________

La risposta è dentro di te...
e però, è sbagliata!
borgata non è collegato   Rispondi citando
Vecchio 23-02-2016, 09.25.11   #7
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.395
LoryOne ha un'aura spettacolareLoryOne ha un'aura spettacolareLoryOne ha un'aura spettacolare
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
LoryOne non è collegato   Rispondi citando
Vecchio 23-02-2016, 17.25.03   #8
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.395
LoryOne ha un'aura spettacolareLoryOne ha un'aura spettacolareLoryOne ha un'aura spettacolare
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
LoryOne non è collegato   Rispondi citando
Vecchio 23-02-2016, 19.41.55   #9
borgata
Gold Member
WT Expert
 
L'avatar di borgata
 
Registrato: 23-06-2004
Loc.: Cagliari
Messaggi: 13.121
borgata è un gioiello raroborgata è un gioiello raroborgata è un gioiello raroborgata è un gioiello raro
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!
borgata non è collegato   Rispondi citando
Vecchio 23-02-2016, 19.49.36   #10
xilo76
Forum supporter
Global Moderator
 
Registrato: 23-08-2007
Messaggi: 2.558
xilo76 è conosciuto da tuttixilo76 è conosciuto da tuttixilo76 è conosciuto da tuttixilo76 è conosciuto da tutti
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 06.23.58
xilo76 non è collegato   Rispondi citando
Vecchio 23-02-2016, 20.05.54   #11
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.395
LoryOne ha un'aura spettacolareLoryOne ha un'aura spettacolareLoryOne ha un'aura spettacolare
Rif: Script batch per copia e catalogazione

Quota:
Inviato da borgata Visualizza messaggio
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.
Quello che ho postato è solo un esempio, se vuoi lo scheletro del programma.
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:
Inviato da borgata Visualizza messaggio
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.
Si beh...a dire il vero non ho testato a fondo, però poco ci vuole a fargli fare un'altra dir...
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
LoryOne non è collegato   Rispondi citando
Vecchio 23-02-2016, 23.18.06   #12
borgata
Gold Member
WT Expert
 
L'avatar di borgata
 
Registrato: 23-06-2004
Loc.: Cagliari
Messaggi: 13.121
borgata è un gioiello raroborgata è un gioiello raroborgata è un gioiello raroborgata è un gioiello raro
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!
borgata non è collegato   Rispondi citando
Vecchio 24-02-2016, 08.08.19   #13
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.395
LoryOne ha un'aura spettacolareLoryOne ha un'aura spettacolareLoryOne ha un'aura spettacolare
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
LoryOne non è collegato   Rispondi citando
Vecchio 25-02-2016, 01.01.58   #14
borgata
Gold Member
WT Expert
 
L'avatar di borgata
 
Registrato: 23-06-2004
Loc.: Cagliari
Messaggi: 13.121
borgata è un gioiello raroborgata è un gioiello raroborgata è un gioiello raroborgata è un gioiello raro
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!
borgata non è collegato   Rispondi citando
Vecchio 25-02-2016, 14.26.54   #15
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.395
LoryOne ha un'aura spettacolareLoryOne ha un'aura spettacolareLoryOne ha un'aura spettacolare
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
Restituzione:
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
LoryOne non è collegato   Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is ON
Gli smilies sono ON
[IMG] è ON
Il codice HTML è OFF

Vai al forum

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 20.27.56
Help: script o batch per automatizzare..... TNOTB Programmazione 3 20-10-2008 09.19.28
script batch per creare playlist everett Programmazione 0 15-07-2008 17.55.25
Batch Script particolare gutguy Windows 9x/Me/NT4/2000 1 28-07-2004 17.38.54
vecchi trucchi ma su xp? top gun Windows 7/Vista/XP/ 2003 13 02-03-2004 10.31.48

Orario GMT +2. Ora sono le: 07.39.01.


E' vietata la riproduzione, anche solo in parte, di contenuti e grafica.
Copyright © 1999-2017 Edizioni Master S.p.A. p.iva: 02105820787 • Tutti i diritti sono riservati
L'editore NON si assume nessuna responsabilità dei contenuti pubblicati sul forum in quanto redatti direttamente dagli utenti.
Questi ultimi sono responsabili dei contenuti da loro riportati nelle discussioni del forum
Powered by vBulletin - 2010 Copyright © Jelsoft Enterprises Limited.