Как убрать последний бэкслеш в батнике из переменной?
Приветствую! Суть такова: я дергаю из ключа реестра путь к установленной программе. Он прилетает мне с обратным слешем в конце, я присваиваю это значение переменной. Далее я пытаюсь скормить данную переменную в виде параметра другому скрипту через call, но так как путь содержит пробелы - заключаю переменную в кавычки. В результате скрипт не может понять что я ему скормил, ибо считает закрывающую кавычку частью пути и выдает ошибку. Как убрать последний знак из определенной переменной?
Дополнительно:
set "pathvar=%pathvar:~0,-1%"
- Благодарю. Не силен в регулярных выражениях.
- Владимир Лобанов, тут и нет регулярки - обычный паддинг
по простому - обрезание строки, с начала до конца минус один символ. - DevMan, спасибо что просветили. Просто не было до этого подобных задач - обычно все решалось копипастом. А сейчас четко подходящего примера не нашел =)) Всех благ.
- Владимир Лобанов, да не вопрос.
не знать что–то – абсолютно нормально. я только поправил.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для удаления последнего обратного слеша из переменной в батнике, можно воспользоваться встроенной командой подстановки подстроки. Ниже приведен пример кода на языке батч:
@echo off setlocal set "var=Some\Path\With\Backslashes\" if "%var:~-1%"=="\" ( set "var=%var:~0,-1%" ) echo %var% endlocal
В этом примере мы проверяем последний символ переменной `var` с помощью подстроки `%var:~-1%`. Если этот символ является обратным слешем, то мы удаляем его с помощью конструкции `%var:~0,-1%`. Затем выводим измененное значение переменной на экран.
Таким образом, после выполнения данного скрипта последний обратный слеш будет удален из переменной `var`.