Проблема при записи в BAT знака равенства

Мне понадобилось вывести из BAT файла несколько строк в файл без перевода на новую строку. Все было нормально до тех пор, пока одна из строк не оказалось знаком равенства.


Для демонстрации будут использованы два набора файлов, в каждом скрипт на питоне и bat файл, который его вызывает. Первый скрипт выводит единичку. Второй — знак равенства.

print('1')
print('=')

BAT файлы отличаются только тем, что вызывают разные скрипты на питоне.

@ECHO OFF
SET python="python"
SET path_to_generated_files="D:\soft\bat_with_equality"
SET logfile="D:\soft\bat_with_equality\log1.txt"
echo|set /p="" 1> %logfile% 
FOR /F "tokens=* USEBACKQ" %%F IN (`python D:\soft\bat_with_equality\script1.py`) DO (
SET var=%%F
)
ECHO %var%
echo|set /p=%var% 1>> %logfile% 
pause

Команда вида:

echo|set /p=%var% >> %logfile%

как раз нужна для того, чтобы строка из переменной вывелась в файл без перевода на новую строку. И из-за присваивания там явно не ожидается в переменной var. Из-за этого при выполнении первого питоновского скрипта в bat файле успешно выводится единичка. А вот при выполнении второго варианта BAT файла (где скрипт на питоне выводит знак равно), выходит ошибка: Ошибка в синтаксисе команды.

Примечание. Вордпресс продолжает хулиганить и меняет знак больше на > в кусках кода.

Как экранировать в этом случае знак равно, я не нашел пока.

You can leave a response, or trackback from your own site.

Leave a Reply