批处理脚本将变量传递给txt文件中的变量以供使用

问题描述 投票:0回答:1

我有一个执行作业的批处理脚本。 & 创建作业的日志文件,日志文件名是作业运行的日期和时间,例如 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
batch-file
1个回答
0
投票

问题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
)替换为文件名适当,创建一个新文件,然后使用该新文件作为消息文本。

© www.soinside.com 2019 - 2024. All rights reserved.