$cmd = "cmd /c echo '{$xml}' > 'C:\\file.xml'";
Не ясно какие кавычки вы имеете ввиду.
Если внутренние одиночные, то просто уберите их.
Только одно, но большое но - в батниках символы < и > являются служебными и в итоговой команде:
echo <InputSettings> <InputSetting> <Name>id_rk</Name>
Они будут будут обработанными интерпретатором соответствующим образом и вы не получите на выходе эту строку.
Мой совет - не обрабатывайте содержимое xml файлов батниками. Кроме вышеперечисленных символов в батниках являются служебными: & | % ! ^, а так же cmd не дружит с UTF-8.