2016-02-10 1 views
2

Я знаю очень мало о скриптах, но я думаю, что я хочу, возможно. Я просто хотел бы получить уведомление по электронной почте, когда файл будет добавлен в определенную папку. У меня нет специального программного обеспечения, поэтому я предполагаю, что это должен быть командный файл или, возможно, VBS?Уведомление по электронной почте, когда файл добавлен в папку

+0

Какого paert вы испытываете трудности с - определение скорости изменения или электронное поколение? – Magoo

+1

Мы используем часть программного обеспечения под названием WatchDirectory для контроля папок и выполнения действий над этими файлами. – Squashman

+0

У меня есть файл .vbs, который отправляет электронное письмо, но каждый скрипт, который я нашел, который должен проверять на наличие новых файлов, не работал. – dingram10

ответ

2

Вы можете сделать это, в пакетном-файле с поддержкой PowerShell:

@echo off 
setlocal EnableDelayedExpansion 
set "[email protected]" 
set "emailPassword=dummyPassword" 
set "[email protected]" 
set "subject=File Changed" 
FOR %%G IN (*) DO attrib -A "%%G" 
:loop 
set "body=" 
FOR %%G IN (*) DO (
    attrib "%%G" | findstr /B /L A 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 Acount, который будет отправлять электронную почту. Это поддерживает теги HTML в теле, как показано в примере.

Обратите внимание, что это не работает при удалении файлов, только изменения и новые файлы.

+0

Это только отправит электронное письмо, правильно? – dingram10

+0

@ dingram10 да, неправильно прочитал вопрос, но я обновлю его –

+0

@ dingram10 обновлен, поэтому теперь он отправляет уведомления по электронной почте об изменениях в папке, в которой находится пакетный файл. –

0

У вас есть информация о вашем почтовом сервере? Какая версия Windows и Powershell у вас есть?

Этого короткий сценарий Powershell работает в моей среде:

$folder = "D:\" 
$mailserver = "your.mailserver.your.company" 
$recipient = "[email protected]" 

$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 "[email protected]" ` 
        -Subject “File Creation Event” ` 
        -Body "A file was created: $($eventArgs.FullPath)" ` 
        -SmtpServer $mailserver ` 
        -Credential $anon 
} 

Остановить оповещения с этим:

Unregister-Event -SourceIdentifier Created -Force 
+0

Я скопировал этот сценарий в файл блокнота, изменил соответствующую информацию и сохранил его как .ps1 на моем DC (2008R2). Затем я щелкнул правой кнопкой мыши и запустил PowerShell. После добавления файла я не получил уведомления. Я пропустил что-нибудь? Кроме того, влияет ли тот факт, что новая подача сканируется в эту папку (pdf)? – dingram10

+0

Не уверен в версии PowerShell, но я хотел бы запустить ее на сервере 2008 R2. В качестве альтернативы я могу запустить его с рабочей станции с Windows 7. У нас есть сервер обмена. У меня есть имя и IP. – dingram10