Проблемы с экранированием специальных символов в пакетном файле

Я использую xmlstarlet для редактирования файла XML. Я столкнулся с проблемами именно с этими двумя командами.

xml ed -P --update /ns2:ExportManifest/ExportManifestEntity[@path='home/user_name/11.05 CFD Developer commits.xanalyzer']/ExportManifestProperty/EntityMetaData/@name -v 11.05 CFD Developer commits.xanalyzer someFile.xml > someFileNew.xml & move /Y someFileNew.xml someFile.xml

Эта команда не делает то, что должна. После запуска вышеупомянутого coomand я нахожу файл пустым. Нужно ли мне что-то сбежать, чтобы заставить эту команду работать?

Второй имеет знак процента. И я обнаружил, что в командном файле я могу избежать его с помощью %%, Но, похоже, он не работает нормально, и я нахожу пустой файл таким же, как указано выше.

xml ed -P --update /ns2:ExportManifest/ExportManifestEntity[@path='home/user_name/11.05.DEV CFD commits %%28feature %%26 bug%%29 by Program.xanalyzer']/ExportManifestProperty/EntityMetaData/@name -v 11.05.DEV CFD commits (feature & bug) by Program.xanalyzer someFile.xml > someFileNew.xml & move /Y someFileNew.xml someFile.xml

Есть идеи?

1 ответ

При выполнении команд xmlstarlet в командном файле вы должны быть очень осторожны с пробелами в значениях атрибута. Я должен был использовать "" сказать окнам, что все есть String Вот. Но я должен был использовать '' чтобы убедиться, что значение атрибута успешно прочитано и сопоставлено. Вот решение:

Новое значение, которое заменит старое, также должно быть в двойных кавычках.

xml ed -P --update /ns2:ExportManifest/ExportManifestEntity[@path="'home/user_name/11.05 CFD Developer commits.xanalyzer'"]/ExportManifestProperty/EntityMetaData/@name -v "11.05 CFD Developer commits.xanalyzer" someFile.xml > someFileNew.xml & move /Y someFileNew.xml someFile.xml

Я сделал то же самое для второй команды:

xml ed -P --update /ns2:ExportManifest/ExportManifestEntity[@path="'home/user_name/11.05.DEV CFD commits %%28feature %%26 bug%%29 by Program.xanalyzer'"]/ExportManifestProperty/EntityMetaData/@name -v "11.05.DEV CFD commits (feature & bug) by Program.xanalyzer" someFile.xml > someFileNew.xml & move /Y someFileNew.xml someFile.xml
Другие вопросы по тегам