2013-05-01 4 views
0

Il y a deux fichiers qui sont téléchargés dans D: \ CW-Data \ edw chaque jour entre 1h du matin et 1h15 du matin. Mon exigence est de nous envoyer automatiquement l'email avec le nom du fichier lorsque les deux fichiers sont reçus. J'ai essayé d'écrire un cript qui traverse le dernier fichier qui arrive, mais je n'obtiens pas le résultat attendu. S'il vous plaît, aidez-moi: Mon script étaitEnvoi de courrier électronique automatique après le téléchargement de fichiers?

set srcDir=D:\Mitul\Quantum AWR Report_23Apr_3am_2pm 
set lastmod= 
pushd %srcDir% 
for /f "tokens=*" %%a in ('dir /b /od 2^>NUL') do set lastmod=%%a 
echo %lastmod% 
+0

Quelles sont les attend et les résultats réels? – Ren

+0

@peter J'ai besoin du script complet pour envoyer le courrier. S'il vous plaît ignorer le script que j'ai mentoned.It juste à travers le dernier fichier modifié. – user2211392

+0

Tout ce que j'ai fait était de reformater le script que vous avez posté. Comme tout le monde, je n'ai aucune idée de vos attentes - vous devez spécifier ce que vous voulez. Quel est votre "résultat attendu"? Quel résultat avez-vous obtenu? Quel résultat visez-vous? – Magoo

Répondre

0
@echo off 
setlocal 
set srcDir=D:\CW-Data\edw 
set file1=whateverthenameofthefirstfileis 
set file2=whateverthenameofthesecondfileis 
:loop 
set /a count=0 
for /f %%a in ('dir /b "%srcdir%\%file1%" "%srcdir%\%file2%" 2^>NUL') do set /a count+=1 
IF NOT %count%==2 timeout /t 5 >nul&GOTO loop 
echo send the email 

Cela attendra les deux fichiers pour arriver. Si l'un ou l'autre est manquant, attendez 5 secondes et réessayez.

Vous n'avez pas suffisamment de détails pour en fournir plus.


Addendum:

Si votre édition de Windows ne comprend pas timeout, essayez

IF NOT %count%==2 ping -n 5 127.0.0.1 >nul&GOTO loop 
+0

s'il vous plaît laissez-moi savoir comment configurer cette sortie pour mail.tois-je installer SMTP à mon serveur? – user2211392

+1

Je voudrais Google BLAT – Magoo

+0

Ou [bmail] (http://retired.beyondlogic.org/solutions/cmdlinemail/cmdlinemail.htm). –

1

Ceci est un script d'usage général pour envoyer un e-mail.

thread d'origine à https://groups.google.com/forum/?fromgroups=#!msg/alt.msdos.batch.nt/l_8K11YzS0A/WfbVBoJe-l8J

:: Allows ssl and port 465 



:: email.cmd :::::::::::::::::::::::::::::::::::::::::::::::::::: 
:: Tom Lavedas, Mod 2.14 to eliminate temporary VBS script file 
:: Works with IE5+ (and maybe earlier versions as well) 
@echo off 
    setlocal 

:Use command line arguments, if supplied 
    if [%1] EQU [] goto :Continue 
    set "Arg=%1" 
    set "Arg=%Arg::==%" 
    set "Arg=%Arg:/=%" 
    set "%Arg%" 
    shift 
    goto :Use 
:Continue 

:: defaults 
    if not defined From  set "[email protected]" 
    if not defined To   set "[email protected]" 
    if not defined Subj  set Subj="email test %date% %time%" 
    if not defined Body  set Body="Did it work? %date% %time%" 
    if not defined Serv  set "Serv=smtp.gmail.com" 
    if not defined Auth  set "[email protected]" 
    if not defined Pass  set "Pass=password" 
    if not defined fileattach set "fileattach=" 
    if not defined Port  set "Port=465" 
    if not defined SSL  set "SSL=True" 
    if not defined Timeout set "Timeout=25" 

    call :send %From% %To% %Subj% %Body% %Serv% %Auth% %Pass% %fileattach% 
    if %errorlevel% NEQ 0 echo Error: %ErrorLevel% 
    if %0==%~f0 pause 
    exit /b %ErrorLevel% 

:send 

    set "cdoSchema=http://schemas.microsoft.com/cdo/configuration" 
    set arguments="%~1+%~2+%~3+%~4+%~5+%~6+%~7+%~f8" 

    set VBS=resizeTo 1,1:moveTo 1, 3000: 
    set VBS=%VBS%set ws=createobject("wscript.shell"): 
    set VBS=%VBS%with createobject("scripting.filesystemobject") 
    set VBS=%VBS%Execute ws.ExpandEnvironmentStrings(
    set VBS=%VBS%.GetStandardStream(0).readALL):end with: 
    set "VBS=about:<script type=text/vbs>%VBS%:close</script>" 

    set "Match=VBScript start" 
    for /f "delims=[]" %%N in (
    'find /n "### %Match% ###" ^<"%~f0"' 
) do set "N=%%N" 

    for /f "tokens=1,2 delims=#" %%A in (
    'more +%N% "%~f0" ^| mshta.exe "%VBS%"' 
) do @echo %%B & exit /b %%A 
    exit /b 1 % Error in previous statement % 

' ### VBScript start ### 
set StdOut=.GetStandardStream(1) 
args = Split(%arguments%, "+") 
with CreateObject("CDO.Message") 
    .From  = args(0) 
    .To  = args(1) 
    .Subject = args(2) 
    .Textbody = args(3) 
    if args(7) <> "" then .AddAttachment args(7) 
    with .Configuration.Fields 
    .Item ("%cdoSchema%/sendusing")  = 2 ' not local, smtp 
    .Item ("%cdoSchema%/smtpserver")  = args(4) 
    .Item ("%cdoSchema%/smtpserverport") = %Port% 
    .Item ("%cdoSchema%/smtpauthenticate") = 1 ' cdobasic 
    .Item ("%cdoSchema%/sendusername")  = args(5) 
    .Item ("%cdoSchema%/sendpassword")  = args(6) 
    .Item ("%cdoSchema%/smtpusessl")  = %SSL% 
    .Item ("%cdoSchema%/smtpconnectiontimeout") = %Timeout% 
    .Update 
    end with ' Configuration.Fields 
    On Error Resume Next 
    .Send 
end with ' CDO.Message 
if Err.Number = 0 then 
    sRes = "0#Mail sent without error" 
else 
    sRes = Hex(Err.Number) + "#" + Err.Description 
end if 
stdout.writeline sRes 
' ### VBScript end ### - Must be the end of the batch file 
+0

@foxdrive Je ne peux pas configurer gmail comme environnement client. et pourriez-vous s'il vous plaît me mettre à jour avec le script afin thet je pourrais obtenir une sortie comme je l'exige. – user2211392

+0

Fonctionne avec n'importe quel serveur de messagerie. Désolé que le commentaire était un peu confus. Vous pouvez utiliser votre script, puis appeler ce script, après avoir configuré le serveur etc, ou utiliser call et ajouter tout depuis la ligne de commande. – foxidrive

+0

Salut à tous, j'ai encore un petit cocerns, s'il vous plaît trouver la sortie de mon script, je veux aussi la taille du fichier, s'il vous plaît aidez-moi: @echo off setlocal enabledelayexpansion set srcDir = D: \ Pradeep \ GC ITO Roaster pushd% srcDir% set/a count_ = 0 pour/f "tokens = *" %% a ('dir/b/od 2 ^> NUL') do ( set/a count _ + = 1 ensemble my_arr = %% a ) de type nul> D [compter _!]: \ Pradeep \ output.log set/a mm =% count _% - 2 pour/l %% N dans (1 1% count_%) do ( si %% N GTR% mm% ( echo! My_arr [%% N]! >> D: \ Pradeep \ output.log ) ) – user2211392

Questions connexes