Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    19

    Monitorare directory

    Salve a tutti!
    In questa settimana pre-ferragosto io sto qua in ufficio col ventilatore sparato in faccia a sbattere la testa su vbs

    Devo creare un programma che fa questo:
    1) Monitorare una directory
    2) Quando viene aggiunto un file nuovo, manda lo stesso come allegato ad una mail

    La prima parte l'ho risolta con un programma che ho trovato in rete: Directory Monitor
    Questo simpatico programmino monitora la directory e all'aggiunta di un nuovo file, esegue un programma (ho pensato a un semplice vbs, ma sono flessibile su quale linguaggio utilizzare ) passandogli anche dei parametri, tra cui il percorso assoluto del file.

    Il problema sorge nella seconda parte...

    I file che vengono aggiunti in questa directory sono delle registrazioni audio generate dal nostro centralino voip. Quando parte la registrazione viene subito creato un file wav vuoto e poi scritto ogni 1-2 secondi.
    E qui casca l'asino: appena viene creato il file vuoto, Directory Monitor esegue subito il vbs che restituisce l'errore " il file è utilizzato da un altro processo..." quando cerca di allegare il file. Avevo pensato di gestire l'errore con un WScript.Sleep e poi provare a riallegare il file.
    A parte la soluzione balorda, questo sotterfugio non funziona se anche la seconda volta viene restituito l'errore

    Come posso fare??? Come posso migliorare il codice in modo da gestire n tentativi di allegare il file??

    Grazie a tutti!!!

    codice:
    Set email = CreateObject("CDO.Message")
    
    email.Subject = "Test Email"
    email.From = "XXX"
    email.To = "XXX"
    email.TextBody = "Message Text"
    attachment = WScript.arguments(0)
    
    email.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
    email.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "XXX"
    email.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "XXX"
    email.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    email.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "XXX"
    email.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
    
    email.Configuration.Fields.Update
    
    On Error Resume Next
    email.AddAttachment attachment
    
    If Err.Number <> 0 Then
    WScript.Sleep 30000
    email.AddAttachment attachment
    email.Send
    End If
    
    Err.Clear
    
    email.Send

  2. #2
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Devi tentare di aprire il file in maniera esclusiva, all'interno di un loop in cui, intercettando l'errore, scopri se il file è accessibile o meno.
    Nel momento in cui è accessibile (aperto) allora lo chiudi e lo invii.

    Non so quanto sia possibile in VBScript, ma sicuramente con un linguaggio un po' più strutturato è davvero banale. Anche in VB6 (molto simile al VBScript).

    il concetto comunque è quello sopra, se riesci a farlo in VBScript, meglio per te.


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.