电子邮件通知当文件添加到文件夹

我对脚本知之甚less,但我想我想要的是可能的。 当文件被添加到特定的文件夹时,我只想获得电子邮件通知。 我没有任何特定的软件,所以我想这将是一个batch file或VBS?

您可以在启用了powershell的批处理文件中执行此操作:

@echo off setlocal EnableDelayedExpansion set "emailUserName=dummyEmail@gmail.com" set "emailPassword=dummyPassword" set "target=yourEmail@email.com" set "subject=File Changed" FOR %%G IN (*) DO attrib -A "%%G" :loop set "body=" FOR %%G IN (*) DO ( attrib "%%G" | findstr /B /LA 1>nul if !errorlevel! equ 0 ( echo "%%G" set "body=!body!^<br ^/^>%%G" attrib -A "%%G" ) ) 2>nul if not "%body%"=="" echo sending email if not "%body%"=="" set "body=The following files have been changed:!body!" if not "%body%"=="" powershell.exe -command "Send-MailMessage -From '!emailUserName!' -to '!target!' -Subject '!subject!' -Body '!body!' -BodyAsHtml -Smtpserver 'smtp.gmail.com' -port '587' -UseSsl -Credential (New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList ('!emailUserName!', (ConvertTo-SecureString -String '!emailPassword!' -AsPlainText -Force)))" goto :loop 

为了这个工作,你需要创建一个虚拟gmail帐户,将发送电子邮件。 这支持正文中的HTML标签,如示例所示。

请注意,这不适用于删除文件,只有更改和新文件。

你有关于你的电子邮件服务器的信息吗? 你有什么版本的Windows和Powershell?

这个简短的Powershell脚本在我的环境中工作:

 $folder = "D:\" $mailserver = "your.mailserver.your.company" $recipient = "your.email@your.company" $fsw = New-Object System.IO.FileSystemWatcher $folder -Property @{ IncludeSubdirectories = $true NotifyFilter = [IO.NotifyFilters]'FileName' } $created = Register-ObjectEvent $fsw -EventName Created -Action { $item = Get-Item $eventArgs.FullPath $s = New-Object System.Security.SecureString $anon = New-Object System.Management.Automation.PSCredential ("NT AUTHORITY\ANONYMOUS LOGON", $s) Send-MailMessage -To $recipient ` -From "alerts@your.company" ` -Subject “File Creation Event” ` -Body "A file was created: $($eventArgs.FullPath)" ` -Smtpserver $mailserver ` -Credential $anon } 

用这个停止警报:

 Unregister-Event -SourceIdentifier Created -Force