Единственный раз, когда это может произойти, если в вашей строке есть пробел, возможно, приложение отправляет строку, включая пробел? По этой причине я бы изменил строку, заключив ее в двойные кавычки:
"^<office^>(Town) - Street, number^</office^>"
Затем мы можем расширить его, чтобы избавиться от кавычек, используя %~1
@echo off
chcp 65001
setlocal EnableDelayedExpansion
SET "op=%~1"
echo !op!>>C:\test\test.txt
chcp 866 > NUL
Затем вы можете проверить его, и он должен использовать всю строку каждый раз:
batchfile.bat "^<office^>(Town) - Street, number^</office^>"
и результат остается неизменным в test.txt после 4 запусков:
<office>(Town) - Street, number</office>
<office>(Town) - Street, number</office>
<office>(Town) - Street, number</office>
<office>(Town) - Street, number</office>