Como Concatenar a Sequência de Repetição no Script em Lote

1

Estou tentando concatenar uma string repetida dependendo do primeiro valor de parâmetro passado para o script quando ele é chamado. Esse valor representa o número de níveis de diretório que o diretório atual é da raiz do repositório em que o usuário está trabalhando. Este é o meu script até agora:

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

O meu problema é que, se codificar set "UPPATH=%UPPATH%%UPDIR%" em qualquer número de vezes, funciona bem, mas parece que não quer trabalhar no ciclo. Quaisquer pensamentos ou sugestões sobre como obter esse loop para trabalhar com o parâmetro passado serão apreciados. Obrigado.

    
por Jim Fell 11.02.2015 / 00:50

1 resposta

2

Funciona bem, mas parece que não quer trabalhar no loop.

Você precisa definir EnableDelayedExpansion .

EnableDelayedExpansion

Delayed Expansion will cause variables to be expanded at execution time rather than at parse time, this option is turned on with the SETLOCAL command. When delayed expansion is in effect variables may be referenced using !variable_name! (in addition to the normal %variable_name% )

Example

Setlocal EnableDelayedExpansion

Fonte EnableDelayedExpansion

Veja a resposta por Joey para uma explicação mais detalhada de por que isso é necessário.

Leitura Adicional

por 11.02.2015 / 10:07