Вероятно, главная проблема - это часть cmd /c if %errorlevel% == 0
, она расширяет уровень ошибки до того, как любая из ваших команд будет выполнена.
Обычно задержка расширения - выбор, но здесь он не работает (или, как упоминал Джои, с / V: on), потому что он находится в новом контексте cmd.
Здесь вы можете использовать его таким образом cmd /c if %%errorlevel%% == 0
, поэтому, если полный блок анализируется в первый раз, деталь расширяется до cmd /c if %errorlevel% == 0
, и это расширяется во второй раз, когда выполняется cmd /c
.
И вы могли бы немного украсить код
set "officePath=U:\sysmon\u_cleanup"
set "officeDatePath=%officePath%\results\office_lists_%YY_MM_DD%"
for /f "tokens=1 delims= " %%i in ("%officePath%\office_list.txt") do (
if not exist "%officePath%\results\%%i" (
mkdir "%officePath%\results\%%i"
)
for /f "tokens=1 delims= " %%j in ("%officeDatePath%\%%i_dir_list_%YY_MM_DD%_final.txt") do (
forfiles /P %1%%i\%%j /S /D +%3 /C "cmd /c if %%errorlevel%% == 0 echo ** Do not Archive - Found files modified after %3 > %officePath%\results\%%i\%%j_%YY_MM_DD%.txt"
)
)