您好我是这个网站的新手并且如果之前已经回答过道歉,但是虽然我可以在这个网站上找到我的问题的部分答案,但我无法找到我想要的解决方案。做。
我需要做的是,在批处理脚本中定义文件列表,然后遍历包含一些数据文件的目录,并确保已传送到该目录的文件与我的文件中的文件相匹配名单。如果他们不构建一个字符串,该字符串将以回车分隔,然后形成电子邮件警报的文本,该警报将在批处理结束时调用。到目前为止我所拥有的是:
{{1}}
当我尝试运行它时,它会运行,但我的错误列表没有构建。我可以回应一下!arrayline [%% n]!每次在循环中变量,但它不会写入或附加到Missing File变量。同样地,如果我尝试将结果输出到文件,则不会输出任何内容 - 我只是收到有关回声关闭的各种消息。
任何指导都将不胜感激。
答案 0 :(得分:0)
您正在使用!arrayline[%%n]!
的延迟展开,但%MissingFiles%
@echo off
setlocal EnableDelayedExpansion
SET ImportDirectory=D:\Data Files\
SET MissingFiles=
REM Build Array of sorts
set "arrayline[0]=%ImportDirectory%File1*.xml"
set "arrayline[1]=%ImportDirectory%File2*.xml"
set "arrayline[2]=%ImportDirectory%File3*.xml"
REM Loop through and check whether file exists
for /l %%n in (0,1,2) do (
if not exist !arrayline[%%n]! (
echo File does not exist
SET "MissingFiles=!MissingFiles!,!arrayline[%%n]!"
REM echo File !arrayline[%%n]! has not been delivered for processing >> %LogFilePath%
echo File !arrayline[%%n]! has not been delivered for processing
) else (
echo File !arrayline[%%n]! Exists
)
)
REM Test to see if any files are missing and send email
IF NOT "%MissingFiles%" == "" (
Echo Missingfiles: %MissingFiles:~1%
REM Call code that sends the email with Missing Files as the body
)