我是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文件的运行时间与文件名末尾的日期变量相同。
答案 0 :(得分: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"