批处理文件变量问题

时间:2013-11-07 04:23:48

标签: batch-file batch-processing

我在整个批处理文件中传输变量时遇到问题。

这是我所拥有的一个粗略的例子:

@echo off
setlocal enabledelayedexpansion

:one
set variableone=outputone
set variabletwo=outputtwo
set variablethree=outputthree
goto two

:two
set /a variable%variableone%four=numberone
set /a variable%variabletwo%five=numbertwo
set /a variable%variablethree%six=numberthree
goto three

:three
set /a variable%variableone%four+=(2*(!variable%variabletwo%five!-!!variable%variablethree%six!)
echo !variable%variableone%four!
exit

它比它长很多,这只是它实际上的简化版本,但是,标签“:three”中的变量不会向下传递,因此变量最终为空白,这使得等式为空同样。有没有办法来解决这个问题?

1 个答案:

答案 0 :(得分:1)

很难看出你在做什么。

在下面的代码中,我用变量名NUMBER*替换了值。

我还添加了缺少的近括号,我想知道两个成功

@ECHO OFF
setlocal enabledelayedexpansion

:one
set variableone=outputone
set variabletwo=outputtwo
set variablethree=outputthree
goto two

:two
set /a variable%variableone%four=numberone
set /a variable%variabletwo%five=numbertwo
set /a variable%variablethree%six=numberthree
set /a variable%variableone%four=14
set /a variable%variabletwo%five=25
set /a variable%variablethree%six=36
goto three

:three
set /a variable%variableone%four+=(2*(!variable%variabletwo%five!-!!variable%variablethree%six!))
echo !variable%variableone%four!
set var

现在对我来说,回应的是 -8 ,等于14+(2 *(25-36))

所以 - 对我有用!