当另一个作业完成处理文件时,该文件将被删除到目录中。 要求是运行批处理脚本来检查该文件是否可供使用。如果可用,我需要执行某些批处理脚本。(示例:具有命名模式 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