Hola. Los mensajes de error que empiezan por "No se esperaba X..." implican un error de sintaxis en el código.
El error lo tienes concretamente al dejar un espacio en blanco entre el nombre de la variable y el operador de asignación (
set /p a =), con eso lo que consigues es crear una variable de nombre "a " (nótese el espacio), no "a", y entonces la estás intentando evaluar mal, por que para evaluar esa variable deberías escribir
%a %, no
%a% en las condicionales de tu código.
En otras palabras, el error de "No se esperaba GoTo" salta por que estás intentando comparar NADA (o nulo), con 1. Para que se entienda mejor, esto es lo que realmente estás haciendo:
if ==1 goto log.
Este problema te sucede basicamente por que estás utilizando malos hábitos de programación en Batch con los que solo conseguirás generar errores tontos. Debes hacer uso de las comillas dobles para encerrar los nombres de las variables y los parámetros/argumentos en general para evitar que esto te vuelva a suceder. Y de paso utiliza también los operadores de apertura y cierre de agrupación de comandos (los paréntesis)...
Ejemplo:
:Log
REM ...
REM ...
( Aunque tu intención sea evaluar valores númericos (1, 2) la variable %var% es un string, y se debe tratarlo como tal en las condicionales. )
¡Saludos!