获取文件名bat

时间:2013-03-15 18:06:08

标签: variables date batch-file filesize

我是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文件的运行时间与文件名末尾的日期变量相同。

1 个答案:

答案 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"

相关问题