Condividi:        

Controllo file e attributi

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Controllo file e attributi

Postdi karug64 » 06/01/12 12:59

Seguito di questa altra discussione: viewtopic.php?f=26&t=94082&p=538133#p538133
Flash30005 ha scritto:Per il Ps2

prova qui ;)

ciao


Quindi vuol dire che posso continuare a "chiedere" in questo forum ?
Se cosi' ecco:
devo creare un file BAt che faccia le seguenti operazioni:

1) controllare se in una cartella definita (per esempio c:\test\) e che e' sempre la stessa ci sia un file che ha sempre lo stesso nome (per es,. prova.all). (questo file cambia di mese in mese e sovrascrive quello precedente ognivolta).
2) se il file e' presente devo controllare la data di creazione
3) controllare se in un altra cartella definita (per esempio d:\destinazione\) sia presente un file definito (per esempio prova2.all).
4) se e' presente controllare la data di creazione.
5) se la data di creazione dei due file controllati è la stessa dare messaggio "Il file prova.all non è stato ancora aggiornato"

6) se la data di creazione del file prova.all e' successiva a quella di prova2.all allora:
7) cancello il file prova2.all
8 ) copio il file prova.all nella cartella d:\destinazione\
9) rinomino il file prova.all in prova2.all

10) se la data del file prova.all è antecedente a quella di prova2.all dare messaggio "Per questo mese l'operazione è gia' stata effettuata"

Grazie e buon 2012 a tutti.
Office 2010
karug64
Utente Senior
 
Post: 746
Iscritto il: 20/11/11 21:22

Sponsor
 

Re: Grazie

Postdi Anthony47 » 06/01/12 21:10

Immagino che sia solo per una prova generica, visto che non tutte le condizioni sono state descritte; comunque puoi usare una macro del tipo
Codice: Seleziona tutto
Sub fintobat()
TestF1 = "C:\TempPIPPO\prova1.txt"   '<<
TestF2 = "C:\TempPIPPO\prova2.txt"   '<<
If Len(Dir(TestF1)) > 0 And Len(Dir(TestF2)) > 0 Then
    If Int(FileDateTime(TestF1)) = Int(FileDateTime(TestF2)) Then
        MsgBox ("Il file prova.all non è stato ancora aggiornato"): Exit Sub '<<<
    End If
    If Int(FileDateTime(TestF1)) + 1 > Int(FileDateTime(TestF2)) Then
        FileCopy TestF1, TestF2: Exit Sub
    End If
    If Int(FileDateTime(TestF1)) > Int(FileDateTime(TestF2)) Then
        MsgBox ("Per questo mese l'operazione è gia' stata effettuata")
    End If
End If
End Sub
Ovviamente devi personalizzare le istruzioni marcate <<

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19480
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Grazie

Postdi karug64 » 06/01/12 21:29

Grazie Anthony.
Quindi per effettuare queste operazioni dove mi consigli di inserire questa sub ?
In un foglio excel nel workopen o in quale linguaggio ?
Grazie
Office 2010
karug64
Utente Senior
 
Post: 746
Iscritto il: 20/11/11 21:22

Re: Grazie

Postdi Anthony47 » 06/01/12 21:34

E' una macro excel, non hai bisogno di un .bat per fare quelle cose.

Ovviamente la cosa ha una sua utilita' se parli di controlli associati ad altre elaborazioni che fai in excel.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19480
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Grazie

Postdi karug64 » 06/01/12 21:41

Anthony47 ha scritto:E' una macro excel, non hai bisogno di un .bat per fare quelle cose.

Ovviamente la cosa ha una sua utilita' se parli di controlli associati ad altre elaborazioni che fai in excel.

Ciao


No. In effetti queste operazioni sono estranee ad excel.
Per questo cercavo un modo per farle tramite file BAT. Ma se non c'e' modo di farlo diversamente, posso pur sempre "invertarmi" un excel con un button che faccia questo "giro".

Ciao.
Office 2010
karug64
Utente Senior
 
Post: 746
Iscritto il: 20/11/11 21:22

Re: Grazie

Postdi Anthony47 » 06/01/12 21:46

Non so "battare" tanto, capisco qualcosa di vba e poco altro.

Vediamo se ti arrivano altri suggerimenti...

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19480
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Grazie

Postdi karug64 » 06/01/12 21:50

Anthony47 ha scritto:Non so "battare" tanto, capisco qualcosa di vba e poco altro.

Vediamo se ti arrivano altri suggerimenti...

Ciao


Modesto ...... :)

Ciao
Office 2010
karug64
Utente Senior
 
Post: 746
Iscritto il: 20/11/11 21:22

Re: Controllo file e attributi

Postdi Flash30005 » 07/01/12 00:28

E se non fosse un file .bat?

Copia questo script
Codice: Seleziona tutto
Dim POrig
Dim PDest
Dim File1
Dim File2
Dim FileTest1
Dim FileTest2

POrig = "C:\Temp\"
PDest = "D:\Destinazione\"
File1 = "Prova1.Txt"
File2 = "Prova2.Txt"

FileTest1 = POrig & File1
FileTest2 = PDest & File2

Set fso = CreateObject("Scripting.FileSystemObject")

If fso.FileExists (FileTest1) then

   If fso.FileExists (FileTest2) then
      Set FFS1 = fso.GetFile(FileTest1)
      Set FFS2 = fso.GetFile(FileTest2)
      If Int(FFS1.DateLastModified) = Int(FFS2.DateLastModified) Then
                Call MsgBox("Il file non è stato ancora aggiornato")
      Else
         If Int(FFS1.DateLastModified) > Int(FFS2.DateLastModified) Then
            fso.DeleteFile FileTest2
            fso.CopyFile FileTest1, PDest
            fso.MoveFile PDest & File1, PDest & File2
            Mes = "SOSTITUZIONE AVVENUTA!!!" & vbcrlf & vbcrlf
            Mes = MES & " premere Ok  "
            Call MsgBox(Mes)
            wscript.sleep 1000
         Else
            Call MsgBox("Per questo mese l'operazione è gia' stata effettuata")
         end if
      end if
   end if
end if


Incollalo in un file testo (Notepad)
Effettua solo le modifiche (nome file e percorsi) in queste quattro righe:
Codice: Seleziona tutto
POrig = "C:\Temp\"
PDest = "D:\Destinazione\"
File1 = "Prova1.Txt"
File2 = "Prova2.Txt"

salva il file con il nome che vuoi (es. pippo.txt)
rinomina l'estensione in pippo.vbs

Clicca due volte sul file.

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Controllo file e attributi

Postdi karug64 » 07/01/12 11:49

Ero certo che la soluzione sarebbe arrivata !!

Posso chiedere dove posso trovare dei riferimenti sul vbscript (cercando su google trovo vari esempi di vbscript ma legati a pagine HTML. Quel linguaggio e' lo stesso o il vbscript di cui hai postato il codice va ricercato in altro modo) ?

Esiste un ambiente di sviluppo (tipo il visual basic) anche per vbscript cosi' da poter fare il debug (punti interruzione, visualizzazione valore variabili, ecc ) ?
Vorrei apportare ulteriori modifiche e controlli al codice postato.

Grazie.
Office 2010
karug64
Utente Senior
 
Post: 746
Iscritto il: 20/11/11 21:22

Re: Controllo file e attributi

Postdi Flash30005 » 07/01/12 12:37

La ricerca del vbscript la puoi fare su google
Avrai capito che il vbs è pericolosissimo proprio perché "silente"
(molti virus vengono creati con questo codice)
proprio per questo non voglio approfondire l'argomento.

Per il debug non saprei perché per quanto abbia cercato non ho trovato nulla
l'unica cosa è che, in caso di errore, hai l'informazione del numero riga che dovrai correggere.

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Controllo file e attributi

Postdi PcBase » 07/01/12 12:42

Ciao

Spero di ricevere ulteriori commenti sul codice Vbs...

Intanto allego alcuni esempi che avevo scaricato dalla rete
Si tratta di file originali pronti all'uso basta eseguire il formato Vbs
http://www.sendspace.com/file/rss0v7
Windows xp + Office 2003 Ita
Windows8 Office 2013
PcBase
Utente Senior
 
Post: 143
Iscritto il: 24/02/11 23:26

Re: Controllo file e attributi

Postdi Anthony47 » 07/01/12 18:27

Il codice puo' essere eseguito (o solo debuggato) all' interno del vba; inoltre se spuntate (Menu /Strumenti /Riferimenti /...) la libreria Microsoft Scripting Runtime avete a disposizione anche l' help on line e i suggerimenti interattivi e non e' necessario usare la funzione CreateObject [es Set fso = CreateObject("Scripting.FileSystemObject")] ma bastera' usare una New per impostare il riferimento all' oggetto [es Set fso = New Scripting.FileSystemObject].
Tuttavia questa modalita' (detta di early binding) richiede che sul pc che esegue la macro (lo script) sia impostato il "Riferimento" che ho detto prima; la modalita' senza questa impostazione e' detta di late binding e lavora piu' "alla cieca" (gli errori si manifesteranno solo in esecuzione e l' origine sara' difficile da assegnare; le keyword e la sintassi non sono verificate).
Personalmente io preferisco progettare e debuggare in early binding ma poi rimuovere il riferimento e trasformare il codice in late binding (in genere basta rimpiazzare il Set con il CreateObject).

Questo vale non solo per il vbs: dovunque avete visto CreateObject c' e' una libreria che potrebbe essere linkata per creare un riferimento diretto all' oggetto (CreateObject("InternetExplorer.Application")=Internet Controls; CreateObject("Outlook.Application")=Outlook xx.0 Object Library; etc).

Spero di non avervi confuso oltre le mie intenzioni :D :D

Ciao a tutti.
Avatar utente
Anthony47
Moderatore
 
Post: 19480
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Controllo file e attributi

Postdi karug64 » 08/01/12 14:36

Anthony47 » 06/01/12 20:46
Non so "battare" tanto, capisco qualcosa di vba e poco altro.


... e meno male che .......
Office 2010
karug64
Utente Senior
 
Post: 746
Iscritto il: 20/11/11 21:22

Re: Controllo file e attributi

Postdi karug64 » 09/01/12 20:24

Anthony47 ha scritto:se spuntate (Menu /Strumenti /Riferimenti /...) la libreria Microsoft Scripting Runtime


Ciao. Ho installato VB5 (lo so che e' vecchio, ma quello avevo ....) e questa voce di menu non la trovo. Puo' essere che e' presente sulle versioni piu' recenti ?
Office 2010
karug64
Utente Senior
 
Post: 746
Iscritto il: 20/11/11 21:22

Re: Controllo file e attributi

Postdi Anthony47 » 09/01/12 22:14

Questa impostazione la puoi fare all' interno dell' editor delle macro, dove cosi' potrai creare un oggetto script usando ad esempio
Set fso = New Scripting.FileSystemObject

Ciao (buona esplorazione)
Avatar utente
Anthony47
Moderatore
 
Post: 19480
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Controllo file e attributi":


Chi c’è in linea

Visitano il forum: Nessuno e 76 ospiti