PDA

Visualizza versione completa : [WinXP] Programma che invia email quando un file raggiunge una certa dimensione


gutguy
23-03-2009, 17.38.47
Ciao a tutti,
Vqualcuno di voi conosce per caso un programma che controlli le dimensioni di un dato file e che invii una email ad un indirizzo preimpostato quando il file raggiunge una certa dimensione?
Eventualmente sarebbe possibile farlo con un batch?
Grazie a chi risponderà.

Franzo
25-03-2009, 09.19.25
con un batch non so...forse con vbscript oppure con qualsiasi linguaggio di programamzione

gutguy
13-07-2009, 10.40.42
Sono eiuscito con un semplice batch e grazie all'aiuto di un programma chaimato "postie" a fare quanto mi serviva.
Ma ho però un problema:
riesco a controllare un solo file mentre io ne vorrei controllare due e più.

Allego alla presente il codice sperando che qualche anima pia possa aiutarmi:



@echo off

:la dimensione è espressa in bytes (1 Kilobyte = 1024 bytes)
:http://egret.net/kb__mb.htm
:1825361100

setLocal EnableDelayedExpansion

set filedacontrollare1=c:\file.pst
for /f "tokens=* delims= " %%a in ('dir /b /s %filedacontrollare1%') do (
if %%~Za geq 1 echo %%a e' ora uguale o maggiore di 1.7 GB >> E:\postie\pst\log.txt
goto email
)


:email
sleep 10
E:\postie\postie -host:85.37.16.62 -to:mioindirizzo@email.com -from:server@email.com -s:"batch" -file:"E:\postie\pst\log.txt"


pause



Il problema è che non so come fare per es. per fargli controllar euna lista di files.

Grazie mille in anticipo a chi mi aiuterà.

roberto45
13-07-2009, 11.35.50
Due le possibilità:
Lanci un ciclo for nello stesso file batch riassegnando il nome del file da controllare.
Usi un altro file bach con una serie di parametri (i nomi dei file da controllare) lanciando il batch attuale ed usi lo SHIFT per passare al controllo del successivo parametro (nome del file).

gutguy
15-07-2009, 15.14.35
Grazie mille per la risposta.
Ho provato nel seguente modo ma non è andato a buon fine (ha controllato solo il primo file ignorando il secondo):



@echo off

:la dimensione è espressa in bytes (1 Kilobyte = 1024 bytes)
:http://egret.net/kb__mb.htm
:1825361100

setLocal EnableDelayedExpansion

set filedacontrollare1=c:\file1.pst
set filedacontrollare2=c:\file2.pst


for /f "tokens=* delims= " %%a in ('dir /b /s %filedacontrollare1%') do (
if %%~Za geq 1 echo %%a e' ora uguale o maggiore di 1.7 GB >> E:\postie\pst\log.txt
goto email
)

for /f "tokens=* delims= " %%a in ('dir /b /s %filedacontrollare2%') do (
if %%~Za geq 1 echo %%a e' ora uguale o maggiore di 1.7 GB >> E:\postie\pst\log.txt
goto email
)


:email
sleep 10
E:\postie\postie -host:85.37.16.62 -to:mioindirizzo@email.com -from:server@email.com -s:"batch" -file:"E:\postie\pst\log.txt"


pause



Riusciresti a darmi un'altra manina?

roberto45
15-07-2009, 18.17.43
Setta un flag all'interno dei cicli for se la condizione é vera e togli i goto email , alla fine controlla se flag é settato ed eventualmente invia la mail

gutguy
16-07-2009, 10.35.16
Setta un flag all'interno dei cicli for se la condizione é vera e togli i goto email , alla fine controlla se flag é settato ed eventualmente invia la mail

Ancora grazie per la risposta, riusciresti micca a riportarmi direttament eil codice sulla base del mio batch? Scusami, sono un po-lentone!
Grazie mille.