А обязательно использовать
%%i?
Или вместо i можно использовать f, g и вообще, любую другую букву?
Просто с BAT знаком на уровне новичка-любителя...
И попутно вопрос...
В моём случае при использовании проверки IF NOT DEFINED необходимо делать undefine для флага $IS_DEFINED... А как?
Ошибка синтаксиса...
Код:

::====================================================================================================================================
:: >> Основные настройки скрипта
@ECHO OFF
SETLOCAL
:: << << <<
::====================================================================================================================================
:: >>Назначаем необходимые переменные
:: Папка, куда необходимо копировать резервные копии
SET $BACKUP_DIR=S:\Backup
:: Путь до архиватора
SET $WINRAR=C:\Program Files\WinRAR\WinRAR.exe
:: Имя компьютера
:: %COMPUTERNAME%
:: Дата, согласно которой проверять файлы на изменение
SET $MODIFIED_SINCE=20110323
:: << << <<
::====================================================================================================================================
:: >> Определяем массив папок для копирования
SET "$FOLDER:01=C:\Documents"
SET "$FOLDER:02=C:\Letters"
SET "$FOLDER:03=C:\ThirdFolder"
:: ...и так далее...
:: << << <<
::====================================================================================================================================
:: >> Проход по всем папкам и проверка, есть ли изменения
FOR /f "tokens=2 delims==" %%i IN ('SET $FOLDER') DO (
:: >> Устанавливаем текущий каталог
SET $FOLDER_CURRENT=%%i
PUSHD "%$FOLDER_CURRENT%"
:: << << <<
:: >> Выполняем поиск изменённых файлов
FOR /f "tokens=1" %%i IN ('DIR /s /tw /a-d') DO (
IF NOT DEFINED $IS_MODIFIED (
CALL:@check %%i
)
)
:: << << <<
:: >> Проверка результата поиска изменённых файлов. Если изменений нет, то ничего не делаем
:@next
POPD
IF NOT DEFINED $IS_MODIFIED (
GOTO:@continue
)
:: << << <<
:: >> Если изменения есть, то упаковываем папку в архив
::A Добавить в архив
::-AG+[FORMAT] Добавить к имени архива текущие дату и время. Если перед FORMAT стоит +, то дата будет добавлена перед именем
::CH -TL Установить время архива по времени новейшего файла
::-DH Открывать совместно используемые файлы
::-EP1 Исключить базовую папку из пути
::-INUL Не выводить сообщения об ошибках
::-M5 Метод сжатия: максимальный
::-S Создать непрерывный архив
::-Y Подразумевать ответ "Да" на все вопросы
::-X{NAME} Не обрабатывать файл/папку NAME. [-x*\temp\] - искл. все папки temp и файлы внутри папок temp
"%$WINRAR%" A -AG+YYYY-MM-DD CH -TL -DH -EP1 -ISNUL -M5 -S -Y "%$FOLDER_CURRENT%" ""
:: << << <<
:@continue
)
:: << << <<
::====================================================================================================================================
GOTO:@exit
::====================================================================================================================================
:: >> Поиск изменённых файлов
:@check
FOR /f "tokens=1-3 delims=." %%i IN ("%1") DO (
IF %%k%%j%%i geq %$MODIFIED_SINCE% (
SET $IS_MODIFIED=1
)
)
GOTO:eof
:: << << <<
::====================================================================================================================================
:@exit
PAUSE