Вы неправильно определили источник проблемы! : -)
Ваша проблема в самой первой строке - ваш оператор FOR обрабатывает строку, а не файл, потому что предложение IN () заключено в двойные кавычки. Если вы хотите, чтобы предложение IN () рассматривалось как имя файла в кавычках, вам нужно добавить USEBACKQ в ваши параметры FOR.
FOR /F "usebackq tokens=1,2 delims==" %%g in ("%CFGFILE%") do (
Просто на голову - даже после исправления, приведенного выше, ваш код не даст правильных результатов, если появится любое из следующих условий
Если какая-либо строка содержит !
, то расширение %% g или %% h будет повреждено, поскольку включено отложенное расширение
Строка с комментариями # будет неполной, если оригинал содержал =
Ваши обычные строки не будут полными, если в оригинале есть 2-й =