0

我是 BAT 写作的新手。
我正在尝试编写一个批处理文件,它将检查文件是否高于或低于特定大小,然后相应地发送电子邮件。我写了一些可以用静态文件名做到这一点的东西

@echo off
setlocal
set file="ssoff.bat"
set maxbytesize=1000

FOR /F "usebackq" %%A IN ('%file%') DO set size=%%~zA

if %size% LSS %maxbytesize% (
    echo.File is ^< %maxbytesize% bytes
    blat -server mail.omers.com -f checker@omers.com -t rplomp@omers.com -s "filesize less than" -body testbody 
) ELSE (
    echo.File is ^>= %maxbytesize% bytes
    blat -server mail.omers.com -f checker@omers.com -t rplomp@omers.com -s "filesize greater than" -body testbody
)

在这种情况下,被检查的文件名是ssoff.bat. 但是,我需要让 bat 检查根据日期每天更改的文件名。文件名的掩码使用日期字符串 IE: deployEAR_restartWAS_03132013.log ; deployEAR_restartWAS_03142013.log... 等等 - 最后 8 个字符反映生成的日期。bat 需要检查该目录中的最新文件。今天将是 deployEAR_restartWAS_03152013.log

该日志文件也不在父目录中。

我想也许让蝙蝠将最新文件从该目录复制到父目录,然后检查它的大小?或者使用文件名的静态部分, 'deployEAR_restartWAS_'然后通过date变量传递它的最后一部分?但我不确定哪种方法最好,而且我敢肯定还有其他我没有想到的方法。

bat 文件运行时间与文件名末尾的日期变量是同一天。

4

1 回答 1

0
for /f %%i in ('dir /b /a-d /od deployEAR_restartWAS_*.log') do set name=%%i&set size=%%~zi
echo latest file is %name% size %size%

从您的描述中无法确定这组.log文件位于哪个目录中。您告诉我们它不会出现,the parent directory并且您唯一的参考似乎是that目录。

如果.log文件不在 CURRENT 目录中,您只需将目录名称添加到deploy...因此:Q:\wherever\it\maybe\deployEAR_restartWAS_*.log或者,如果文件的路径包含空格,请引用名称:"Q:\where ever\it\may be\deployEAR_restartWAS_*.log"

于 2013-03-15T18:20:08.147 回答