Ваша строка @set ROOT_DIR_NAME=%ROOT_DIR:~0,-1%
удаляет только 1 символ из значения переменной.Вы хотите удалить больше (у 'scripts' есть 7, плюс у вас есть эти '\ ..' в конце ...).Вы уверены, что у вас всегда есть 'scripts' в качестве последнего каталога в пути, куда вы устанавливаете?
В любом случае, если вы используете @set ROOT_DIR_NAME=%ROOT_DIR:~0,-11%
, это должно работать для вашего конкретного примера.
ОднакоЯ бы посоветовал вам использовать более общий подход:
@set SCRIPT_DIR=%~dp0
@pushd %script_dir%
@pushd ..\..
@echo. current directory now is %cd%
@set root_dir=%cd%
@popd
@popd
Это работает независимо от длины имен каталогов.
Команды pushd
изменяют каталоги (и помните, откуда они пришлиfrom) - команды popd
возвращаются к тому, что запомнил pushd
.Переменная %cd%
содержит текущий путь + путь.