我在整个批处理文件中传输变量时遇到问题。
这是我所拥有的一个粗略的例子:
@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”中的变量不会向下传递,因此变量最终为空白,这使得等式为空同样。有没有办法来解决这个问题?
答案 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))
所以 - 对我有用!