01MDM Знак процента в батниках служебный - это ни для кого не секрет. Как выполняется батник?
Правильно - cmd формирует новую строчку команды, в соответствии с тем, что написано в файле (подставляет переменные и т.д.) и запускает ее. То есть, если в батнике есть строчка set "s=%", cmd берет эту строчку, пытается туда подставить переменную (если переменная в батнике с одним знаком процента, он ожидает что-нибудь вида %1 или %9) - переменной % у нас нет, поэтому формируя строчку на запуск, cmd подставляет вместо знака процента пустое место. Ну и запускается у нас команда set "s=".
SapSat Цитата: Если же это значение ! aaa % bbb формируется где-то динамически, то оно будет гулять в вправильном виде
Там свои заморочки - зависит от того, что ты делаешь с содержимым переменной и установлена ли директива отложенного раскрытия переменных.