|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Nov 2004
Messaggi: 414
|
[VBS] come trovare files txt vuoti in un folder
Ciao a tutti,
vorrei far girare il file bat o vbs in modo da controllare all'interno di una cartella se esistono dei file txt vuoti ad esclusione del file pippo.txt. Questo poi dovrebbe inviare un'email indicando il file vuoto. Per l'invio dell'email potrei usare clemail.exe , ma ora soffermiamoci su file vbs o bat. per la scansione ho un vbs che mi elimina il file vuoto : 'prepara l'oggetto filesystem Set objFS = CreateObject("Scripting.FileSystemObject") 'prepara il file da controllare Set objFile = objFS.GetFile("C:\Documents and Settings\Desktop\Nuova cartella\FileDaControllare.txt") ' Se la dimensione del file e' zero allora cancellalo If objFile.Size = 0 then objfile.delete 'Fine dello script wsh.quit ma invece di cancellarlo vorrei che mi indicasse i files txt vuoti senza cancellarli. chi mi può dare una mano ?
__________________
...Se avete bisogno del Nick IWCLUB IwBank o codice promozione di Fastweb cliccate qui : www.nickpresentatore.altervista.org |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2004
Messaggi: 414
|
Nessuno sa darmi una dritta?
magari come leggere i files in un specifico folder ? come scrivere il risultato in un file txt ? anche un pezzo alla volta , magari qualcuno può aiutarmi su quel che sà . anche che non sia vbs, l'importate è arrivare al risultato. Scusate ma è importante. Grazie mille
__________________
...Se avete bisogno del Nick IWCLUB IwBank o codice promozione di Fastweb cliccate qui : www.nickpresentatore.altervista.org |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Aug 2004
Messaggi: 311
|
in vba si fa con 7 istruzioni.
vedi Dir
__________________
Senior Member Registrato il: Jan 2001 Messaggi: 2609 |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2004
Messaggi: 414
|
quali sono le sette istruzioni ?
__________________
...Se avete bisogno del Nick IWCLUB IwBank o codice promozione di Fastweb cliccate qui : www.nickpresentatore.altervista.org |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Nov 2004
Messaggi: 414
|
ad esempio per iniziare , per scrivere un file ho usato questo :
Private Sub Form_Load() Open "C:\Documents and Settings\giak\Desktop\Nuova cartella\esempio.txt" For Append As #1 Print #1, "Hello, World!" Close #1 End Sub ma non mi crea niente ?
__________________
...Se avete bisogno del Nick IWCLUB IwBank o codice promozione di Fastweb cliccate qui : www.nickpresentatore.altervista.org |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Aug 2004
Messaggi: 311
|
Pronti:
__________________
Senior Member Registrato il: Jan 2001 Messaggi: 2609 |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Nov 2004
Messaggi: 414
|
Grazie mille per l'aiuto!!
ma si può richiamare un file vbs all'interno di un file vbs ?
__________________
...Se avete bisogno del Nick IWCLUB IwBank o codice promozione di Fastweb cliccate qui : www.nickpresentatore.altervista.org |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Nov 2004
Messaggi: 414
|
Sub aaa()
'do il nome al file dove memorizzo l'elenco filename = "elenco.txt" Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject") Path$ = .Range("C:\Documents and Settings\pippo\Desktop\Nuova cartella ") NomeFile$ = Dir(Path$ & "\*.txt") Set objFile = objFS.GetFile(NomeFile$) Do Until NomeFile$ = "" If objFile.Size = 0 then Set MyFile = ScriptObject.CreateTextFile(("C:\Documents and Settings\pippo\Desktop\Nuova cartella " & filename) MyFile.Write chr(Asc(Mid(NomeFile$))) Loop End With MyFile.Close End Sub E' corretto ?
__________________
...Se avete bisogno del Nick IWCLUB IwBank o codice promozione di Fastweb cliccate qui : www.nickpresentatore.altervista.org |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Aug 2004
Messaggi: 311
|
ma vuoi salvare l'elenco dei file desiderati (p.es. file *.txt vuoti) in un file ?
lo puoi fare sempre da vba. vuoi mandare una mail con allegato il file degli elenchi ? anche questo lo puoi fare sempre da vba. excel lo puoi considerare come una (super) interfaccia grafica di VB. non vuoi usare vba ma un vbs ? penso che se prendi il codice vba e lo trapianti nel tuo ambiente vbs funzioni paro paro.
__________________
Senior Member Registrato il: Jan 2001 Messaggi: 2609 |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Aug 2004
Messaggi: 311
|
per esempio (ma ci sono anche altri metodi)
Metodo SendMail Invia la cartella di lavoro tramite il sistema di posta elettronica installato. Sintassi espressione.SendMail(Recipients, Subject, ReturnReceipt) espressione Argomento necessario. Un'espressione che restituisce un oggetto Workbook. Recipients Argomento necessario di tipo Variant. Specifica il nome del destinatario sotto forma di testo o di matrice di stringhe di testo se esistono più destinatari. È necessario specificare almeno un destinatario. Tutti i destinatari vengono aggiunti nella casella A del messaggio. Subject Argomento facoltativo di tipo Variant. Specifica l'oggetto del messaggio. Se non è specificato, verrà utilizzato il nome del documento. ReturnReceipt Argomento facoltativo di tipo Variant. Se ha valore True, verrà richiesta la ricevuta di ritorno. Se ha valore False, non verrà richiesta la ricevuta di ritorno. Il valore predefinito è False.
__________________
Senior Member Registrato il: Jan 2001 Messaggi: 2609 |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Nov 2004
Messaggi: 414
|
Grazie, ma ho capito che con vba o vbs puoi fare quello che vuoi.
Al momento però mi interessa sapere : - se il codice che ho scritto è giusto - eventualmente cosa ho sbagliato - magari se mi spieghi pure qualcosina te ne sarei grato per la spedizione devo utilizzare clemail in quanto il server non dispone di outlook o thunderbird . il file devo scedularlo con i task di winzoz di notte in modo da aver la mattina seguente la situazione dei file vuoti presenti nel folder via email
__________________
...Se avete bisogno del Nick IWCLUB IwBank o codice promozione di Fastweb cliccate qui : www.nickpresentatore.altervista.org |
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Codice:
'Aggiungere Rif. a Microsoft Scripting Runtime
Dim FSO As Scripting.FileSystemObject
Set FSO = New Scripting.FileSystemObject
Dim nomeCartella As String
nomeCartella = ThisWorkbook.Path & "\"
Dim cartella As Scripting.Folder
Set cartella = FSO.GetFolder(nomeCartella)
Dim report As Scripting.TextStream
Set report = FSO.CreateTextFile(nomeCartella & "report.txt", True)
Dim ctrlNome As Boolean
Dim F As Scripting.File
For Each F In cartella.Files
If F.Name = "pippo.txt" Or F.Name = "report.txt" Or Right(F.Name, 4) <> ".txt" Then
ctrlNome = False
Else
ctrlNome = True
End If
If ctrlNome = True And F.Size = 0 Then report.WriteLine F.Name & " è un file di testo vuoto."
Next F
|
|
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Aug 2004
Messaggi: 311
|
già fatto. arrivi sempre tardi e sempre più lento.
__________________
Senior Member Registrato il: Jan 2001 Messaggi: 2609 |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
|
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Nov 2004
Messaggi: 414
|
Quote:
ho provato ad inserirlo all'interno di un file excel, ma mi genera questo errore : Errore di compilazione: non valido all'esterno di una routine ( Set FSO = New Scripting.FileSystemObject ) ma creando un file excel con macro, poi come faccio a lanciarlo con i task di winzoz e far girare la macro e poi chiudere l'excel ? con un file vbs ci sono riuscito.
__________________
...Se avete bisogno del Nick IWCLUB IwBank o codice promozione di Fastweb cliccate qui : www.nickpresentatore.altervista.org Ultima modifica di Giak79 : 19-08-2010 alle 17:23. Motivo: correzione |
|
|
|
|
|
|
#16 | ||
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Inoltre ho chiaramente indicato che devi aggiungere al progetto un Riferimento alla libreria "Microsoft Scripting Runtime". In quel modo puoi costruire tutti gli oggetti FileSystem dalla libreria e usufruire degli aiuti e suggerimenti dell'intellisense VBE. Cosa invece non possibile richiamando la libreria in questo modo : Codice:
Set FSO = CreateObject("Scripting.FileSystemObject")
Quote:
Questa è la versione VBS del mio VBA precedente : Codice:
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
Dim nomeCartella
nomeCartella = "C:\Prova\"
Dim cartella
Set cartella = FSO.GetFolder(nomeCartella)
Dim report
Set report = FSO.CreateTextFile(nomeCartella & "report.txt", True)
Dim ctrlNome
Dim F
For Each F In cartella.Files
If F.Name = "pippo.txt" Or F.Name = "report.txt" Or Right(F.Name, 4) <> ".txt" Then
ctrlNome = False
Else
ctrlNome = True
End If
If ctrlNome = True And F.Size = 0 Then report.WriteLine F.Name & " è un file di testo vuoto."
Next
|
||
|
|
|
|
|
#17 | |
|
Senior Member
Iscritto dal: Nov 2004
Messaggi: 414
|
Quote:
sono arrivato a questo punto : Dim report,fso, folder, testfile, elemFolder set fso= CreateObject("Scripting.FileSystemObject") folder=fso.getfolder(""C:\Documents and Settings\pippo\Desktop\Nuova cartella") set report = CreateObject("Scripting.FileSystemObject") Set testfile = report.CreateTextFile("C:\Documents and Settings\pippo\Desktop\Nuova cartella\report.txt", True) testfile.write "( elementi presenti in nuovacartella diversi da pippo o report" testfile.Close
__________________
...Se avete bisogno del Nick IWCLUB IwBank o codice promozione di Fastweb cliccate qui : www.nickpresentatore.altervista.org |
|
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Ti ho già postato il codice VBS...
|
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Nov 2004
Messaggi: 414
|
Scusa non avevo visto, grazie mille!!!!!!!
__________________
...Se avete bisogno del Nick IWCLUB IwBank o codice promozione di Fastweb cliccate qui : www.nickpresentatore.altervista.org |
|
|
|
|
|
#20 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:29.




















