1

Я пытаюсь объединить повторяющуюся строку в зависимости от первого значения параметра, переданного в сценарий при его вызове. Это значение представляет количество уровней каталогов, из которых текущий каталог находится в корне хранилища, в котором работает пользователь. Это мой сценарий до сих пор:

set REPO_ROOT="%~1"
set "UPPATH=.\"
set "UPDIR=..\"
for /l %%i in (1,1,%REPO_ROOT%) do set "UPPATH=%UPPATH%%UPDIR%"
echo %UPPATH%

Моя проблема в том, что если я жестко set "UPPATH=%UPPATH%%UPDIR%" любое количество раз, он работает нормально, но, похоже, не хочет работать в цикле. Будем благодарны за любые мысли или предложения о том, как заставить этот цикл работать с переданным параметром. Благодарю.

1 ответ1

2

Он работает нормально, но, похоже, не хочет работать в цикле.

Вам нужно установить EnableDelayedExpansion .


EnableDelayedExpansion

Задержка расширения приведет к тому, что переменные будут расширяться во время выполнения, а не во время анализа, эта опция включается командой SETLOCAL . Когда действует отложенное расширение, на переменные можно ссылаться с помощью!variable_name! (в дополнение к обычному% variable_name%)

пример

Setlocal EnableDelayedExpansion

Source EnableDelayedExpansion

Смотрите ответ Джои для более подробного объяснения, почему это необходимо.


Дальнейшее чтение

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .