/ / Windows batch - acessa variáveis ​​SET fora de uma rotina - windows, batch-file, loop, cmd, escopo

Windows batch - acessa variáveis ​​SET fora de uma rotina - windows, batch-file, loop, cmd, escopo

Eu estou tentando analisar uma versão do arquivo do formulário 1.2.3.4 em suas partes componentes.

digamos que eu tenha o arquivo ParseVersion.bat

Eu quero chamá-lo com

call ParseVersion.bat 101.102.103.104

e em retorno, pegue quatro variáveis ​​chamadas v1, v2, v3 e v4

minha tentativa

setlocal ENABLEDELAYEDEXPANSION
set Version=%1
set Version=%Version:.=,%

set j=1
for %%i in (%Version%) do (
echo !j! %%i
set /a j=!j!+1
set v!j!=%%i
)
endlocal

Depois de chamar isso de outro arquivo de lote, eu quero ser capaz de acessar %v1% através %v4% como variáveis ​​de ambiente. Eu acho que o problema é devido ao SET"s dentro de um setlocal não persistir fora do setlocalmas como eu faço isso?

Respostas:

1 para resposta № 1

Faça um call :

@echo off
set "$count=1"
set "$var=%1"
for %%a in (%$var:.= %) do call:next %%a
echo %var1% - %var2% - %var3% - %var4%
exit/b

:next
set "var%$count%=%1"
set /a $count+=1