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。ただし、日付に応じて毎日変更されるファイル名をバットにチェックさせる必要があります。ファイル名のマスクは、日付文字列IE:deployEAR_restartWAS_03132013.log ; deployEAR_restartWAS_03142013.log...などを使用します。最後の8文字は、生成された日付を反映します。batは、そのディレクトリ内の最新のファイルをチェックする必要があります。今日は deployEAR_restartWAS_03152013.log

このログファイルも親ディレクトリにはありません。

batに最新のファイルをそのディレクトリから親ディレクトリにコピーしてから、そのサイズを確認することを考えたのではないでしょうか。または、ファイル名の静的部分を使用して、 その最後の部分を変数'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 に答える