Batch file 用于删除名称中包含todays日期的文件的批处理脚本

Batch file 用于删除名称中包含todays日期的文件的批处理脚本,batch-file,command-line,Batch File,Command Line,我有一个遗留作业,它创建了这样一个文件am\u mailplan.xlsx\u 20200228\u 090901AM 我需要检查文件是否存在于该路径中,如果存在,只需写入日志即可。但该文件夹也有较旧的文件。所以我需要检查文件名的一部分是否包含今天的日期。因此,我尝试了下面的代码,它能够找到名称中包含今天日期的文件,并按预期写入日志 在此之后,最后一步是删除名称中包含今天日期的文件。今天可能有多个文件。因此,我使用del“%FileName%*”,当我运行bat文件时,它正在删除以前存在的文件,

我有一个遗留作业,它创建了这样一个文件
am\u mailplan.xlsx\u 20200228\u 090901AM

我需要检查文件是否存在于该路径中,如果存在,只需写入日志即可。但该文件夹也有较旧的文件。所以我需要检查文件名的一部分是否包含今天的日期。因此,我尝试了下面的代码,它能够找到名称中包含今天日期的文件,并按预期写入日志

在此之后,最后一步是删除名称中包含今天日期的文件。今天可能有多个文件。因此,我使用del“%FileName%*”,当我运行bat文件时,它正在删除以前存在的文件,但它正在再次创建一个新文件。例如,如果我在11:45运行bat文件,在此之前的任何文件都将被删除
am_mailplan.xlsx_20200309_105446AM
,并在11:05创建一个新文件
am_mailplan.xlsx_20200309_114546AM
我不知道它是如何创建一个新文件的,因为一个新文件只在我调用的行中创建

start /WAIT F:\CPTS\AMMailPlan\apps\AltMediaLoad\setup.exe /s /w  
我在脚本末尾一直在调用delete

请建议一种方法来处理删除的最后一步

Rem AltMedia starts here
Rem Check if any file came for processing on the day of execution
if exist F:\CPTS\AMMailPlan\Inbound\*.txt (
    move F:\CPTS\AMMailPlan\Inbound\*.txt C:\Backup\AltMedia
    echo %DATE% %TIME% Altmedia text file moved to backup >>C:\JobValidationLog\JobValidationLog.txt
)
if exist F:\CPTS\AMMailPlan\Inbound\*.xlsx (
    move F:\CPTS\AMMailPlan\Inbound\*.xlsx  C:\Backup\AltMedia
    echo %DATE% %TIME% Altmedia xlsx file moved to backup >>C:\JobValidationLog\JobValidationLog.txt
)
Rem copy the files from test folder to inbound
xcopy H:\TestFiles\AltMediaTestFile\*.txt  F:\CPTS\AMMailPlan\Inbound
if %errorlevel% == 0 (
    echo %DATE% %TIME% AltMedia test file copied to inbound >>C:\JobValidationLog\JobValidationLog.txt
)
xcopy H:\TestFiles\AltMediaTestFile\*.xlsx  F:\CPTS\AMMailPlan\Inbound
if %errorlevel% == 0 (
    echo %DATE% %TIME% AltMedia xls test file copied to inbound >>C:\JobValidationLog\JobValidationLog.txt
)
Rem Call the load altmedia exe
start /WAIT F:\CPTS\AMMailPlan\apps\AltMediaLoad\setup.exe /s /w
echo %DATE% %TIME% Calling AltMediaLoad\setup.exe >>C:\JobValidationLog\JobValidationLog.txt

set mydate=%date:~10,4%%date:~4,2%%date:~7,2%
echo my date %mydate%
set "FileName=F:\CPTS\AMMailPlan\Completed\am_mailplan.xlsx_%mydate%"
if exist "%FileName%*" (
    echo %DATE% %TIME% The file exist in completed folder "%FileName%">>C:\JobValidationLog\JobValidationLog.txt
) 
if %errorlevel% == 0 (
    echo %DATE% %TIME% validation successful>>C:\JobValidationLog\JobValidationLog.txt
)
echo "%FileName%*"
del "%FileName%*"

文件是在你删除后创建的?对,詹姆斯,这就是我所困惑的,它是如何再次创建的。删除是我正在做的最后一个操作。我已经重新格式化了你发布的代码,因为它是无效的。我还包括缩进,以帮助代码的可读性。如果您的实际代码与最初发布的代码相匹配,请在寻求任何进一步帮助之前将其更改为“我的编辑版本”。根据您的程序所做的操作,即使您希望等待,它也可能仍在运行。您可能希望运行tasklist或检查它。