Передать аргумент пути, содержащий скобки, в пакетный файл MS DOS - PullRequest
0 голосов
/ 22 апреля 2019

Мне нужно добиться ниже, используя скрипт Robotframework:

c:\>runbatch "C:\Program Files (x86)\tool\bin\test.exe"      C:\tool\get.ini 

, где runbatch - пакет MS DOS и "C: \ Program Files (x86) \ tool \ bin \ test.exe" и C: \ tool \ get.ini - это параметры пакетного файла. Первый аргумент содержит путь инструмента, который имеет "(" and ")" в своем пути.

Так что в моем скрипте робота у меня есть переменная, как показано ниже:

${tool_path}        "C:\\Program Files (x86)\\tool\\bin\\test.exe"
${tool_ini}        "C:\tool"

И вызывать, как показано ниже:

${RC}=    Run Process    ${CURDIR}/../scripts/runbatch.bat    ${tool_path}    ${tool_ini}\\get.ini

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

В пакете я добавил комментарии, чтобы просто зарегистрировать аргументы, и обнаружил, что они полностью искажены, значение tool_path полностью искажено ("\" C: \ Program ) и второй аргумент становится ( Файлы ) - как я могу исправить проблему в скрипте робота, чтобы при прохождении пути фигурные скобки не изменялись?

1 Ответ

0 голосов
/ 22 апреля 2019

Вам также нужно экранировать обратную косую черту в ${tool_ini} - сделать его значением c:\\tool; это не преступник, просто что-то изменить.

Удалите двойные кавычки в значениях аргументов - Run Process они не нужны так, как вы их называете, с аргументом ключевого слова на аргумент скрипта. E.g.:

${tool_path}        C:\\Program Files (x86)\\tool\\bin\\test.exe
${tool_ini}            C:\\tool

${RC}=    Run Process    ${CURDIR}/../scripts/runbatch.bat    ${tool_path}    ${tool_ini}\\get.ini

То, как вы их оценили, стало частью самой ценности.


В качестве альтернативы, сохраняя там двойные кавычки, вы можете вызвать скрипт со всеми аргументами в строке вызова:

${tool_path}        "C:\\Program Files (x86)\\tool\\bin\\test.exe"
${tool_ini}         C:\\tool

${RC}=    Run Process    ${CURDIR}/../scripts/runbatch.bat ${tool_path} "${tool_ini}\\get.ini"

(второй действительно не нужны кавычки, но я добавил их для согласованности)


Между прочим, пока не проблема - путь к сценарию использует косые черты ( / ), что немного неортодоксально для Windows. Вопреки распространенному мнению, ОС поддерживает этот разделитель пути почти так же, как поддерживает обратную косую черту ( \ ), просто она не используется широко и выглядит немного неуместно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...