Итак, я выяснил причину всех проблем в этой теме. Первоначально я думал, что это относится к 2010 году, но пакетные файлы для 2013 имеют ту же ошибку синтаксического разбора токена. По сути, все пакетные файлы, которые MS распространяет со своими компиляторами с 2010 по крайней мере до 2013 года, имеют такую же ошибку. Если вы ищите все .bat файлы для этой строки
"%%i"
и замените его на
"%%j"
все будет работать правильно. По сути, они пытаются запросить в реестре записи разных версий, чтобы получить правильные пути для использования. Они создают цикл for, который будет перебирать токены из каждой строки, которую запрашивает запрос. Есть три жетона, которые должны вернуться. Они используют %% i для первого, который будет REG_SZ, чтобы увидеть, было ли что-то найдено. Затем они используют тот же самый для сравнения со строкой версии. Они должны использовать %% j, чтобы получить второй токен, который будет 8.0 или 10.0 или 12.0 и на самом деле даст хорошее сравнение. Затем они правильно используют %% k, чтобы получить путь, связанный с версией.
Опять же, выполните простой поиск и замену во всех файлах, которые имеют такой шаблон:
@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Microsoft\VisualStudio\SxS\VS7" /v "12.0"') DO (
@if "%%i"=="12.0" (
@SET "VS120COMNTOOLS=%%k"
)
)
и сделайте так:
@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Microsoft\VisualStudio\SxS\VS7" /v "12.0"') DO (
@if "%%j"=="12.0" (
@SET "VS120COMNTOOLS=%%k"
)
)
, изменив второе вхождение %% i в кавычках на %% j.
Надеюсь, это поможет!