Вопрос или проблема
Я новичок в командной строке Windows, будьте добры.
Я испытываю трудности с выполнением следующей команды с предопределенными переменными, которые передаются из другого скрипта, который, по сути, вызывает приведенную ниже функцию.
Open sftp://%1%:%2%@someurl.com -hostkey="ssh-rsa 2048 %4%"
Переменные %1%
и %2%
возвращаются корректно, но %3%
не работает, вероятно, потому что она заключена между двумя "
как параметр. Как мне нужно изменить синтаксис, чтобы выполнить команду? Я пробовал &
и экранирование с помощью каретки, но это не дало результата.
Спасибо
Ответ или решение
Чтобы корректно вставить переменные в команду Windows BAT, особенно когда они находятся внутри кавычек, необходимо учитывать правильный порядок кавычек и синтаксиса. В вашем случае вы столкнулись с проблемой при использовании переменной %4%
, которая могла не подставляться правильно из-за вложенных кавычек.
Ваш оригинальный код выглядит так:
Open sftp://%1%:%2%@someurl.com -hostkey="ssh-rsa 2048 %4%"
Попробуйте изменить синтаксис следующим образом, используя двойные кавычки с правильной экранированием:
Open sftp://%1%:%2%@someurl.com -hostkey=ssh-rsa 2048 %4%
С этой правкой кавычки вокруг аргумента hostkey
были убраны, что может помочь избежать обработки переменной %4%
как части строки, заключенной в кавычки. Убедитесь, что при вызове переменной она правильно инициализирована перед выполнением команды.
Если вам нужно, чтобы значение параметра hostkey
оставалось в кавычках, вы можете использовать такую конструкцию:
Open sftp://%1%:%2%@someurl.com -hostkey="ssh-rsa 2048 %4%"
Обязательно проверьте, чтобы значение переменной %4%
действительно передавалось из вызывающего скрипта корректно. Если это не сработает, убедитесь, что ни одна из переменных %1%
, %2%
, или %4%
не пустая и содержит корректные значения.
Также, если вы хотите дополнительно удостовериться в правильности передачи переменных, добавьте вывод для отладки:
echo %1%
echo %2%
echo %4%
Таким образом, если значения корректны, команда должна выполниться как ожидалось. Удачи, и если возникнут дополнительные вопросы, не стесняйтесь спрашивать!