Как я могу получить правильное сравнение внутри оператора if в командном файле - PullRequest
0 голосов
/ 16 мая 2019

я создаю командный файл, который проверяет, больше ли файл журнала, чем прежде, если он не вызывает монитор, чтобы начать, но я не могу заставить работать блок if, он находится внутри блока if, но это не такпереходит к другой части, и это всегда терпит неудачу, потому что у него нет значения.

Я пытался использовать отложенное расширение, но он либо не получает значение, либо пытается вычислить с именем переменной, ноесли я использую только строку в блоке if, он работает.

REM @echo off
REM SETLOCAL EnableDelayedExpansion 
FOR /F %%i in ('dir /b/a-d/od/t:c omcp_*.log') do set FILENAME=%%i
FOR /F "usebackq" %%A IN ('%FILENAME%') DO set SIZE=%%~zA
IF DEFINED LASTFILENAME (
    IF %FILENAME% == %LASTFILENAME% (
        if DEFINED LASTSIZE (
            IF %SIZE%==%LASTSIZE% ( echo "subir monitor") else ( echo  "no subir monitor" )
        )
    )
) 
set LASTFILENAME=%FILENAME%
set LASTSIZE=%SIZE%

REM setx LASTFILENAME=%FILENAME%
REM setx LASTSIZE=%SIZE%

он должен установить переменные в первом запуске и показывать «no subir monitor» во втором запуске Спасибо

1 Ответ

0 голосов
/ 17 мая 2019

для каждого из ваших сравнений, используйте IF "%FILENAME%" == "%LASTFILENAME%" (- цитирование значений преодолевает не определенную проблему, порождающую синтаксическую ошибку. Он также обслуживает пробелы в именах файлов и может быть удален защитный элемент if if. BTW - set "FILENAME=%%i"&set "size=%%~zi" должен установить размер соответствующим образом - кавычки гарантируют, что назначенные значения разделены соответствующим образом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...