使用批处理脚本检查目录中是否有具有模式的文件



当另一个作业完成处理文件时,该文件将被删除到目录中。 要求是运行批处理脚本来检查该文件是否可供使用。如果可用,我需要执行某些批处理脚本。(示例:具有命名模式 ABC-D*.txt 的文件应该可用,修改日期 = 今天(

到目前为止,我发现的是:

FOR /F "tokens=1,2,3* Delims=/ " %%I in ('DATE /T') DO set TODAY=%%I-%%J-%%K
xcopy C:BatchJobsOdd*.* /L /D:%TODAY%

运行它给出了输出:

C:BatchJobsOddEven.txt
File cannot be copied onto itself
0 File(s)

C:BatchJobsOddEven.txt,在控制台中显示的是我需要的。但是我需要将其存储在某个文件或某个变量中,以便稍后能够在批处理脚本中使用此路径。有人可以帮助我将此文件路径存储在变量或文件中吗?或者建议一些其他方法来实现这一目标?

您可以使用forfiles它能够按上次修改日期过滤文件,但不考虑时间:

forfiles /P "D:ROOT" /M "ABC-D*.txt" /D +0 /C "cmd /C echo @file"

您可以声明要执行的批处理脚本,而不是echo

此代码将标识今天最后写入的"ABC-D*.txt"文件。将下面的代码放入doit.ps1等文件中(但选择更好的名称(。我对文件执行了attrib命令,但您需要执行其他操作。

$srcdir = 'C:srctempty'
Get-ChildItem -File -Path $srcdir -Filter 'ABC-D*.txt' |
Where-Object { $_.LastWriteTime -ge [datetime]::Today } |
ForEach-Object {
# Do something to the $_ file
& attrib $_
}

然后,您可以使用以下命令从cmd shell运行它:

powershell -NoProfile -File doit.ps1

相关内容

最新更新