Прежде всего, я хотел бы сказать, что это одна длинная строка команды lol.
Во-вторых, для безопасной меры запустите цикл FOR как:
FOR /F "tokens=* USEBACKQ" %%a IN (`echo show databases; ^| mysql -ubackup -h33.33.33.33 -pmysecrethaha`)
Просто сделайтепривычка использовать опцию USEBACKQ и помещать вашу команду в кавычки ... на тот случай, если вам когда-нибудь придется использовать кавычки в аргументе командной строки или путях к файлам с пробелами внутри этого цикла команд FOR / F.
В-третьих, как указывалось в PA, используйте отдельные буквы для вашей временной переменной в цикле FOR (az или AZ с учетом регистра, например, %% a OR %% A)
Затем каждый раз, когда вы вызываете эту переменную, вы простоссылаться на него как есть, например, если переменная %% a, вы вызываете ее с %% a.