下面的脚本应检查文件是否已创建,并向我们的某个用户发送电子邮件。
问题是我无法在身体中发送多个值。我需要删除"文件"从身体到收到电子邮件。每个文件也有一封电子邮件。我会重写它以发送一封邮件,其中包含所有列出日期的文件。
@echo off
setlocal enabledelayedexpansion
echo Files changed today %date%
FOR %%A IN (*.*) DO (
set tf=%%~tA
set fd=!tf:~0,10!
if !fd!==%date% (
powershell -ExecutionPolicy ByPass -Command Send-MailMessage ^
-SmtpServer this.server.com ^
-To my@email.com ^
-From noreply@possibly.fake ^
-Subject Updated^
-Body "%%A File"
)
)
所以我实际上让它与一些沉重的googeling一起工作(甚至一次到第3页)
这是我的"检查文件夹中的文件并发送电子邮件,其中包含最新版本和最新版本的电子邮件。
@echo off
setlocal enabledelayedexpansion
echo Files changed today %date%
FOR %%A IN (*.*) DO (
set tf=%%~tA
set fd=!tf:~0,10!
if !fd!==%date% (
set "file=!file! <br> %%A !tf!"
)
if NOT !fd!==%date% (
set "old=!old! <br> %%A !tf!"
)
)
set "file=!file!
set "old=!old!
set "today=<b>New today:</b> %file%"
set "older=<b>Older files</b> %old%"
set "body=!today! <br><br> !older!"
powershell -ExecutionPolicy ByPass -Command Send-MailMessage -BodyAsHtml^
-SmtpServer yourserver.com^
-To your@mail.com ^
-From noreply@possibly.fake ^
-Subject Updated^
-Body '!body!'
答案 0 :(得分:1)
[Im]没有批处理文件的纯PowerShell解决方案,将其保存到扩展名为.ps1
的文件中:
$modifiedToday = gci | ?{ $_.LastWriteTime.Date -eq (Get-Date).Date }
Send-MailMessage `
-SmtpServer this.server.com `
-To my@email.com `
-From noreply@possibly.fake `
-Subject Updated `
-Body ($modifiedToday -join "`n")
不纯,因为它使用缩写别名,如gci
和?{
而不是Get-ChildItem和Where-Object,因为我真的不喜欢官方推荐的PowerShell代码风格的冗长。作为一个不介意编写神秘的批处理文件代码的人,OP也可能会对此表示赞赏。