【发布时间】:2013-03-15 18:06:07
【问题描述】:
我是 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
此日志文件也不在父目录中。
我想也许让 bat 将最新文件从该目录复制到父目录,然后检查其大小?或者使用文件名'deployEAR_restartWAS_' 的静态部分,然后通过date 变量传递它的最后一部分?
但我不确定哪种方法最好,而且我敢肯定还有其他我没有想到的方法。
bat 文件的运行时间与文件名末尾的日期变量是同一天。
【问题讨论】:
-
为什么要分批? powershell 或 c#/vb 控制台应用程序会容易得多。
-
批处理脚本已经过时了。对于您在 powershell 甚至 vbs 中开始的需求,将会变得非常容易且不那么复杂。两种脚本语言都具有丰富的 SMTP 库和函数,以及完整的文件函数,具有很好的可读性。
-
@Dan-o 你在我写上面的时候写的。很高兴你有同样的想法。
标签: variables date batch-file filesize