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..
codice:
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
}
}
Il mio problema e' nella definizione della variabile argFile, dato che vorrei passarla come argomento in fase di esecuzione del VBScript scritto mailfile.vbs
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