/ / Windows batch - accede alle variabili SET all'esterno di una routine: windows, batch-file, for-loop, cmd, scope

Windows batch: consente di accedere alle variabili SET all'esterno di una routine: Windows, batch-file, for-loop, cmd, scope

Sto cercando di analizzare una versione di file del modulo 1.2.3.4 nelle sue parti componenti.

dire che ho il file ParseVersion.bat

Voglio chiamarlo con

call ParseVersion.bat 101.102.103.104

e in cambio ottieni quattro variabili chiamate v1, v2, v3 e v4

il mio tentativo

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

Dopo aver chiamato questo da un altro file batch, voglio poter accedere %v1% attraverso %v4% come variabili d'ambiente. Immagino che il problema sia dovuto al SET"s dentro a setlocal non persistendo al di fuori del setlocal, ma come faccio a fare questo?

risposte:

1 per risposta № 1

Fare un 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