检查批处理文件中是否存在针对数组的文件

时间:2017-05-12 18:46:02

标签: batch-file

您好我是这个网站的新手并且如果之前已经回答过道歉,但是虽然我可以在这个网站上找到我的问题的部分答案,但我无法找到我想要的解决方案。做。

我需要做的是,在批处理脚本中定义文件列表,然后遍历包含一些数据文件的目录,并确保已传送到该目录的文件与我的文件中的文件相匹配名单。如果他们不构建一个字符串,该字符串将以回车分隔,然后形成电子邮件警报的文本,该警报将在批处理结束时调用。到目前为止我所拥有的是:

{{1}}

当我尝试运行它时,它会运行,但我的错误列表没有构建。我可以回应一下!arrayline [%% n]!每次在循环中变量,但它不会写入或附加到Missing File变量。同样地,如果我尝试将结果输出到文件,则不会输出任何内容 - 我只是收到有关回声关闭的各种消息。

任何指导都将不胜感激。

1 个答案:

答案 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
)