文件大小小于错误

时间:2018-05-03 13:01:33

标签: batch-file

如果我的文件大小小于特定大小(在这种情况下,如果它等于零),我试图将我的批处理文件设置为错误输出

我使用了与脚本的大部分相同的格式,但它失败了

:: Check size of input files 
call "%DIR_BAT%\CreateLAFMessage.bat" "%~n0.bat-> %STEP_NBR% - check for size of LOM_AA_2.dat and LOM_AI.dat" %_LAF_MSG_DETAILS%
set ERROR_MSG="%DIR_IP_INTERFACES%\LOM_AA_2.dat" ZERO Byte File
set file="%DIR_IP_INTERFACES%\LOM_AA_2.dat"
set minbytesize=0
FOR /F "usebackq" %%A IN (%file%) DO set size=%%~zA
if %size% LSS %minbytesize% (
    echo.File is ^> %minbytesize% bytes
) ELSE (
    goto ON_ERROR
)
set ERROR_MSG="%DIR_IP_INTERFACES%\LOM_AI.dat" ZERO Byte File
set file="%DIR_IP_INTERFACES%\LOM_AI.dat"
FOR /F "usebackq" %%A IN (%file%) DO set size=%%~zA
if %size% LSS %minbytesize% (
    echo.File is ^> %minbytesize% bytes
) ELSE (
    goto ON_ERROR
)

2 个答案:

答案 0 :(得分:2)

根据我的评论,文件不能低于0 bytes,因此使用if.. LSS..时,0下方不会匹配EQU。相反,使用0来获得高于LEQ的数字,Else

那就是说,为什么你使用2 for循环来实现相同的功能,但不同的文件呢?我们可以运行单个循环并消除for /f我们也不需要for,只需要一个简单的@echo off set "DIR_IP_INTERFACES=D:\SomeDIR" set "files=%DIR_IP_INTERFACES%\LOM_AA_2.dat %DIR_IP_INTERFACES%\LOM_AI.dat" set "minbytesize=0" setlocal enabledelayedexpansion FOR %%A IN (%files%) DO ( set "file=%%A" set "size=%%~zA" if !size! GTR !minbytesize! call :ON_ERROR if !size! EQU !minbytesize! echo %%A ^= !size! bytes ) goto :EOF :ON_ERROR rem do your other stuff here when on_error label is called... echo %file% is not 0 it is !size! 循环。

Promise.all()

答案 1 :(得分:1)

它以什么方式失败?"

也许是因为你正在执行

end of line

如果文件的大小不是if %size% LSS %minbytesize% ,那么这是正确的(然后您报告"大于")

为什么使用minbytesize读取文件的每一行并为文件的每一行执行for /f

如果你所做的只是找到文件的大小,那么普通的set会快得多。