Вложенные операторы If и команда RD - PullRequest
0 голосов
/ 27 марта 2020

Я работаю с вложенным оператором if для удаления каталогов, если они соответствуют определенным критериям. Это часть для l oop, чтобы проверить все каталоги в данном месте. Переменная %JDcalc% представляет разницу между сегодняшним юлианским днем ​​и юлианским днем ​​каталога. Переменная %fdate% - это имя каталога. Уровень ошибки определяется следующим образом:

echo.%fdate% | findstr /C:"OE"

Этот вложенный оператор if работает:

if %errorlevel% EQU 0 (if %JDcalc% GEQ 31 (echo DELETE) else (echo KEEP)) else (if %JDcalc% GEQ 14 echo DELETE)

Как только я переключаю echo DELETE на rd %fdate%, выводится пакетный скрипт " Система не может найти указанный файл. "

if %errorlevel% EQU 0 (if %JDcalc% GEQ 31 (rd %fdate%) else (echo KEEP)) else (if %JDcalc% GEQ 14 rd %fdate%)

Если я использую более простой оператор if, такой как if %JDcalc% GEQ 14 (rd %fdate%), он работает нормально.

РЕДАКТИРОВАТЬ: Ниже приведен сценарий.

@echo off


cd /d C:\Batch\Maximus\Dailies

:TODAYS_JULIAN_DAY
    set /a JD=2458939
        ::a calculation that determines this number is usually here
        ::above is the julian day for 3.30.2020



:FOR_LOOP_FOLDER_NAME
    for /f "delims=" %%a in ('dir /a:d /b') do (
        SETLOCAL EnableDelayedExpansion
        set fdate=%%a
            ::fdate is set to the date in the directory name
            ::with a naming convention of yymmdd

        call :SUBROUTINE
        ENDLOCAL
        )
    GOTO END_BATCH



:SUBROUTINE
    set folyy=%fdate:~0,2%
    set folmm=%fdate:~2,2%
    set foldd=%fdate:~4,2%

    set /a "folyy=1000020%folyy% %%10000,folmm=100%folmm% %% 100,foldd=100%foldd% %% 100"
    set /a folJD=foldd-32075+1461*(folyy+4800+(folmm-14)/12)/4+367*(folmm-2-(folmm-14)/12*12)/12-3*((folyy+4900+(folmm-14)/12)/100)/4
    set /a JDcalc=JD-folJD



    echo.%fdate% | findstr /C:"OE"

    if %errorlevel% EQU 0 (if %JDcalc% GEQ 31 (rd %fdate%) else (echo KEEP)) else (if %JDcalc% GEQ 14 rd %fdate%)

    GOTO :eof



:END_BATCH

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