批处理脚本检查文件的大小,如果更大则发送邮件

时间:2013-03-18 09:23:50

标签: batch-file

我一直在研究一个批处理脚本,它检查文件的大小,并在大小超过0字节的情况下发送电子邮件:

set V_TMP_FILE="D:\pmserver\Tgtfiles\XLI_stage\f_cdc_flag1.out" 
set minbytesize=0  
if exist %V_TMP_FILE% (
FOR %%A IN ('%V_TMP_FILE%') DO set size=%%~zA
if %size% GTR %minbytesize% (
    %V_EMAIL_PATH%\postie -host:internalmail.usa.xl -to:"%V_TO_EMAIL_ID%" -from:%COMPUTERNAME%@xlgroup.com -s:"%V_SRC_TABLE_NM% %V_SUBJ%" -msg:"%V_MSG%" 
) else (
    echo %V_TMP_FILE% is EMPTY
)

我收到以下错误 -

标准输出和错误:

h file. 0 was unexpected at this time.

D:\Informatica91\server\bin>if  GTR 0 (

请帮助我解决这个问题,它真的花时间去挖掘这个问题。

2 个答案:

答案 0 :(得分:1)

批处理在执行命令之前解析整个命令,即使它分布在多行中。作为该过程的一部分,它将任意%var%变量替换为值VAR在PARSED时具有的值 - 即 BEFORE 它被执行。

在解析SIZE之前

IF... NOT 设置,因此其值替换为(nothing),因此命令被解释为IF (nothing) GTR 0 < / p>

此外,文件名周围的单引号会更改文件名dince '是一个有效的文件名字符。

治愈次数:最简单似乎是

if exist %V_TMP_FILE% (
FOR %%A IN (%V_TMP_FILE%) DO (
if %%~zA GTR %minbytesize% (
    %V_EMAIL_PATH%\postie -host:internalmail.usa.xl -to:"%V_TO_EMAIL_ID%" -from:%COMPUTERNAME%@xlgroup.com -s:"%V_SRC_TABLE_NM% %V_SUBJ%" -msg:"%V_MSG%" 
) else (
    echo %V_TMP_FILE% is EMPTY
)

答案 1 :(得分:0)

我们有多少次不得不回答这个......

好的,请查看我一周前写的this回答。它解释了 所有内容 ...