检查Windows批处理脚本中的文件大小

时间:2018-05-03 16:05:03

标签: windows batch-file file-io

我想检查Windows批处理脚本中的文件大小。看起来我的脚本正在退出,而不是继续前进到脚本中的下一步。文件条件不应生成错误,应继续执行下一步。但是我必须在以下内容中遗漏某些内容或有不正确的内容:

:: 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 maxbytesize=0
FOR /F "usebackq" %%A IN (%file%) DO set size=%%~zA
if %size% NEQ %maxbytesize% (
    echo.File is ^<> %maxbytesize% 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% NEQ %maxbytesize% (
    echo.File is ^<> %maxbytesize% bytes
) ELSE (
    goto ON_ERROR
)

1 个答案:

答案 0 :(得分:0)

您已在for循环中启用了Usebackq选项。此选项使用不同的引用方式:

  • &#34; filenameset&#34;。
  • 中长文件名的双引号
  • &#39;要处理的文字字符串的单引号&#39;
  • “命令处理”的反引号

因此,添加双引号会告诉for循环处理文件。

@echo off
set "file=%DIR_IP_INTERFACES%\LOM_AA_2.dat"
set MAXBYTESIZE=0

for /f "usebackq" %%A in ("%file%") do set /a size=%%~zA

if %size% GTR %MAXBYTESIZE% (
    echo(%file% is too large
) else (
    echo(%file% is ^<^> %size% bytes long
)

pause