Windows批处理 - 访问例程之外的SET变量

时间:2014-07-09 22:46:01

标签: windows batch-file for-loop cmd scope

我正在尝试将1.2.3.4格式的文件版本解析为其组成部分。

说我有文件ParseVersion.bat

我想用

来调用它
call ParseVersion.bat 101.102.103.104

然后得到四个变量v1,v2,v3和v4

我的尝试

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

从另一个批处理文件调用此文件后,我希望能够通过%v1%作为环境变量访问%v4%。我想问题是由于SET内的setlocal setlocal未在{{1}}之外持续存在,但我该如何做?

1 个答案:

答案 0 :(得分:1)

制作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