Ciao a Tutti/e
ho creato uno script TCL che gira in windows, che ad un certo punto deve creare ed eseguire un VBScript per l'inivo automatico di una mail
L'invio della mail automatica e' legato al funzionamento corretto di alcuni ftp fatto su diverse macchine/server window e linux
Ecco la parte di codice incriminato..
Il mio problema e' nella definizione della variabile argFile, dato che vorrei passarla come argomento in fase di esecuzione del VBScript scritto mailfile.vbscodice:proc ftpfile {} { global colorbg uf sw sf dd etsn verini set etsn [string toupper $verini] $uf.nm.fr.en_tsn delete 0 end $uf.nm.fr.en_tsn insert 0 $etsn set valx [string length $etsn] if { $valx == 5 } { set newfile [tk_getOpenFile -title "SELECT FILEs TO BE TRANSFERRED" -initialfile Untitled -filetypes {{"All files needed" *.xls} {"All files needed" *.xlsx} {"All files needed" *.XLS} {"All files needed" *.XLSX} {"All files needed" *.txt} {"All files needed" *.pdf} {"All Files" *}} -multiple true] if { $newfile != "" && $etsn != "" } { set mymailfile [open "[set name mailfile.vbs]" w] puts $mymailfile {set WshShell = WScript.CreateObject("WScript.Shell")} puts $mymailfile {Set argv = WScript.Arguments} puts $mymailfile {Dim argDir,argv} puts $mymailfile {Dim argFile} puts $mymailfile {argDir=argv(0)} puts $mymailfile {argFile=argv(1)} puts $mymailfile {WshShell.Run "cmd"} puts $mymailfile {WScript.Sleep 5} puts $mymailfile {WshShell.AppActivate "C:\Windows\system32\cmd.exe"} puts $mymailfile {WScript.Sleep 5} puts $mymailfile {WshShell.SendKeys "telnet servername.com 25~"} puts $mymailfile {WScript.Sleep 5} puts $mymailfile {WshShell.SendKeys "helo xx.com~"} puts $mymailfile {WScript.Sleep 5} puts $mymailfile {WshShell.SendKeys "mail from: PAGINAWEB@xx.com~"} puts $mymailfile {WScript.Sleep 5} puts $mymailfile {WshShell.SendKeys "rcpt to: indirizzomail~"} puts $mymailfile {WScript.Sleep 5} puts $mymailfile {WshShell.SendKeys "rcpt to: indirizzomail~"} puts $mymailfile {WScript.Sleep 5} puts $mymailfile {WshShell.SendKeys "data~"} puts $mymailfile {WScript.Sleep 5} puts $mymailfile {WshShell.SendKeys "subject: TRANSFERRED FILE NOTIFICATION " & argDir} puts $mymailfile {WshShell.SendKeys "~"} puts $mymailfile {WScript.Sleep 5} puts $mymailfile {WshShell.SendKeys "Hello to all,~"} puts $mymailfile {WshShell.SendKeys "~"} puts $mymailfile {WScript.Sleep 5} puts $mymailfile {WshShell.SendKeys "All selected file " } puts $mymailfile {WshShell.SendKeys "~"} puts $mymailfile {WScript.Sleep 5} puts $mymailfile {WshShell.SendKeys " FILES " & argFile} puts $mymailfile {WScript.Sleep 5} puts $mymailfile {WshShell.SendKeys "~"} puts $mymailfile {WScript.Sleep 5} puts $mymailfile {WshShell.SendKeys "has been succesfully transferred on WEB page~"} puts $mymailfile {WshShell.SendKeys "~"} puts $mymailfile {WScript.Sleep 5} puts $mymailfile {WshShell.SendKeys "Link http:xxxxxx.ASP Directory " & argDir} puts $mymailfile {WshShell.SendKeys "~"} puts $mymailfile {WshShell.SendKeys "~"} puts $mymailfile {WScript.Sleep 5} puts $mymailfile {WshShell.SendKeys "Best regards~"} puts $mymailfile {WshShell.SendKeys "~"} puts $mymailfile {WScript.Sleep 5} puts $mymailfile {WshShell.SendKeys "AG8/AGM RA & WFR TEAM~"} puts $mymailfile {WshShell.SendKeys "~"} puts $mymailfile {WshShell.SendKeys "~"} puts $mymailfile {WScript.Sleep 5} puts $mymailfile {WshShell.SendKeys " ** This email is automatically generated , don't reply to it ** ~"} puts $mymailfile {WScript.Sleep 100} puts $mymailfile {WshShell.SendKeys ".~"} puts $mymailfile {WScript.Sleep 100} puts $mymailfile {WshShell.SendKeys "quit~"} puts $mymailfile {WScript.Sleep 100} puts $mymailfile {WshShell.SendKeys " exit~"} close $mymailfile foreach filename $newfile { set conn2 [ftp::Open server.com user password -progress Progress -mode passive] ### set myfile2 [open "[set name prova3.txt]" w] ftp::Cd $conn2 DIRECTORY ftp::MkDir $conn2 $etsn ftp::Cd $conn2 $etsn foreach line2 [ftp::Put $conn2 $filename] { if { $line2 == 0 } { tk_dialog $uf.msg "ERROR" "All selected files CANNOT be copied on XXX unix area !!" error 0 ok } else { } } ftp::Close $conn2 #### exec cmd.exe /C del prova3.txt set conn3 [ftp::Open servername user password -progress Progress -mode passive] ftp::Cd $conn3 DIRECORY ftp::Get $conn3 file.asp ftp::Close $conn3 set conn5 [ftp::Open servername user password -progress Progress -mode passive] ### set myfile2 [open "[set name prova3.txt]" w] ftp::Cd $conn5 DIRECTORY ftp::MkDir $conn5 $etsn ftp::Cd $conn5 $etsn foreach line5 [ftp::Put $conn5 $filename] { if { $line5 == 0 } { tk_dialog $uf.msg "ERROR" "All selected files CANNOT be copied on XXXX unix area !!" error 0 ok } else { } ## close $myfile2 } ftp::Close $conn5 set conn4 [ftp::Open servername user password -progress Progress -mode passive] # set myfile4 [open "[set name prova33.txt]" a] ftp::Cd $conn4 DIRECTORY ftp::MkDir $conn4 $etsn ftp::Cd $conn4 $etsn foreach line4 [ftp::Put $conn4 $filename] { if { $line4 == 0 } { tk_dialog $uf.msg "ERROR" "All selected files CANNOT be copied on WEB page!!" error 0 ok if {![file exists "mailfile.vbs "]} {} else {exec cmd.exe /C del mailfile.vbs} } else { ftp::Put $conn4 file.asp exec cmd.exe /C del file.asp } ## puts $myfile4 "$line4" } ## close $myfile4 ftp::Close $conn4 ### exec cmd.exe /C del prova33.txt } if { $line4 != 0 } { tk_dialog $uf.msg "INFO" "All selected files have been succesfully transferred" info 0 ok exec cmd.exe /C mailfile.vbs $etsn $newfile # if {![file exists "mailfile.vbs "]} {} else {exec cmd.exe /C mailfile.vbs $etsn $filename ; exec cmd.exe /C del mailfile.vbs} } destroy . } else { $uf.nm.fr.en_tsn delete 0 end if {![file exists "mailfile.vbs "]} {} else {exec cmd.exe /C del mailfile.vbs} } } else { tk_dialog $uf.msg "ERROR" "THE NAME MUST HAVE 5 DIGIT!!" error 0 ok if {![file exists "mailfile.vbs "]} {} else {exec cmd.exe /C del mailfile.vbs} $uf.nm.fr.en_tsn delete 0 end } }
Come indicato nello script TCL, la varibile "newfile" puo' essere un solo file, oppure piu' di uno, ma la procedura va in errore
Grazie a tutti per il supporto
Ciao

Rispondi quotando