В вашей переменной расширения есть пробел: % filename%
. Уберите пробел. Но это не исправит вашу логику. По сути, вы пытаетесь сделать двойное расширение переменной. Вы можете сделать это, используя аккуратный трюк с командой CALL.
CALL Set "PrinterName=%%%filename%Printer%%"
Использование команды CALL дает вам две фазы расширения переменной. Когда команда CALL выполняется, строка кода становится такой:
CALL Set "PrinterName=%Shelf-01Printer%"
Затем команда SET
выполняется и устанавливает для переменной соответствующее имя принтера.