Как убрать последний бэкслеш в батнике из переменной?

Ссылка скопирована
6 мая 2026 1 ответ

Приветствую! Суть такова: я дергаю из ключа реестра путь к установленной программе. Он прилетает мне с обратным слешем в конце, я присваиваю это значение переменной. Далее я пытаюсь скормить данную переменную в виде параметра другому скрипту через call, но так как путь содержит пробелы - заключаю переменную в кавычки. В результате скрипт не может понять что я ему скормил, ибо считает закрывающую кавычку частью пути и выдает ошибку. Как убрать последний знак из определенной переменной?

Дополнительно:

set "pathvar=%pathvar:~0,-1%"

  • Благодарю. Не силен в регулярных выражениях.
  • Владимир Лобанов, тут и нет регулярки - обычный паддинг
    по простому - обрезание строки, с начала до конца минус один символ.
  • DevMan, спасибо что просветили. Просто не было до этого подобных задач - обычно все решалось копипастом. А сейчас четко подходящего примера не нашел =)) Всех благ.
  • Владимир Лобанов, да не вопрос.
    не знать что–то – абсолютно нормально. я только поправил.
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Сергей Миронов Ответ

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

@echo off
setlocal
 
set "var=Some\Path\With\Backslashes\"
 
if "%var:~-1%"=="\" (
    set "var=%var:~0,-1%"
)
 
echo %var%
 
endlocal

@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`.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно