Проверьте размер файла в пакетном скрипте Windows - PullRequest
0 голосов
/ 03 мая 2018

Я хочу проверить размер файла в пакетном скрипте 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 голосов
/ 05 мая 2018

Вы включили опцию Usebackq в цикле for. Эта опция использует другой стиль цитирования:

  • Двойные кавычки для длинных имен файлов в "filenameset".
  • Одинарные кавычки для 'Текстовой строки для обработки'
  • Обратные кавычки для `command to process`

Следовательно, добавление двойных кавычек указывает циклу 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...