我有一个执行作业的批处理脚本。 & 创建作业的日志文件,日志文件名是作业运行的日期和时间,例如 C:\Temp\Logs\outputFile_Wed_02102024_114426_89.csv
作业完成后,向 IT 管理员发送作业状态(例如成功/或失败)的电子邮件警报。 sendmail.exe 应用程序用于发送电子邮件,并使用包含电子邮件收件人、发件人、主题和正文的 txt 文件。该电子邮件仅发送给内部电子邮件收件人。
在批处理脚本中,我想将日志文件名存储在变量中,并将变量传递到特定行/位置的文本文件或变量中。这怎么能做到。
此外,目前 txt 文件只能存储一个电子邮件地址。作为解决方法,我使用了多个 txt 文件。当我添加多个收件人电子邮件地址时,会出现错误。它可能与语法或电子邮件地址之间的空格有关。理想情况下,有 1 个 txt 文件可以存储并发送到多个电子邮件地址。我怎样才能拥有多个电子邮件地址
我已经用谷歌搜索并应用了一些建议,但是变量名称没有存储在特定位置的txt文件中
批处理脚本代码
:: send email of script results.
if %JOB_RESULT% equ 0 (
:: script is successful
echo Success. send email
@echo off
:: send email To email address 1
sendmail.exe -t < C:\Temp\success_email_1.txt
:: send email To email address 2
sendmail.exe -t < C:\Temp\success_email_2.txt
pause
exit /b 0
) else (
:: script failed
echo Error. send email alert
@echo off
:: send email To email address 1
sendmail.exe -t < C:\Temp\error_email_1.txt
:: send email To email address 2
sendmail.exe -t < C:\Temp\error_email_2.txt
exit /b 1
)
pause
文本文件的内容是:
成功_电子邮件_1.txt
From: [email protected]
To: [email protected]
Subject: email Alert - job completed OK
Files were downloaded and moved successfully to local folder on serverName & ip address, and moved to SharePoint folder - Teams <name>
Log file name <Variable of log file name & date and time of job execution>
例如,最好是包含多个收件人电子邮件地址的 1 个 txt 文件
成功_电子邮件.txt
From: [email protected]
To: [email protected]; [email protected], [email protected]
Subject: email Alert - job completed OK
问题1:
在块语句
(a parenthesised series of statements)
中,应使用 REM
语句而不是破碎标签注释形式 (:: comment
),因为标签终止块,会造成混淆 cmd
。 ::
是一个损坏的标签,因为您无法使用 ::
到达 goto
,但它仍然是一个标签。
问题2:
Sendmail 的
-t
选项应提供多目标地址功能; `-t 地址1 地址2 地址3。地址之间可能有分号分隔符。 (发现docco没那么挤)
问题 3:(次要,政策)
从排序的角度来看,日期/时间格式
ccyymmdd hhmmss
更好。有很多关于如何在 SO 上执行此操作的示例 - 例如,使用顶部 search
附近的 [batch] date format
设施。请注意,日期格式高度依赖于机器。
第 4 期:
也许您可以在主题行中包含文件数据(我相信 sendmail
-u
选项)
如果您想更改消息正文中的文本,那么 SO(重复搜索布道)上有很多示例 - 只需设置一个模板文件并将该文件中的已知字符串(例如
putthefilenamehere
)替换为文件名适当,创建一个新文件,然后使用该新文件作为消息文本。