我想知道如何存储由.exe程序返回的变量。我的程序名为getNumber.exe,它返回一个数值。 下面我发布了我的批处理文件。我知道我需要检查我的errorlevel变量,但我不确定如何解决这个问题。它将允许我输入一个数字,但我在存储返回的数字时遇到问题,因此我可以在我的批处理文件中使用它。有任何想法吗?
@ECHO OFF
setlocal
for %%f in (%1) do (
if exist "%%f" (
echo 1: Open Notepad
echo 2: Open in Word
echo 3: Open in TextPad
echo 4: Print
getNum.exe
echo %ERRORLEVEL%
) else (
echo "%%f" not found please enter existing .txt file
)
)
:end
答案 0 :(得分:1)
for /f %%g in (getnum.exe) do (
if "%%g"=="1" echo one on "%1"
if "%%g"=="2" echo two
...etc
)
...哦 - 所以声称“它返回一个数值”现在我们被告知它出现在errorlevel
if errorlevel 4 (echo 4 or more
) else (if errorlevel 3 echo three
) else (if errorlevel 2 echo two
) else (if errorlevel 1 echo one
))))
答案 1 :(得分:1)
你必须在StackOverflow上使用所谓的DelayedExpansion
或两个关于此的问题......
事情是,在批次中,当达到第一部分时,立即计算闭合的括号块。这适用于for循环以及if语句。
要延迟变量的计算,以便可以使用在同一块中设置的值,有两种方法:
将setlocal EnableDelayedExpansion
添加到您的代码中(通常位于您的@echo off
下方),如果在此类块中需要变量,则设置在同一个块中,而不是您编写的%myVar%
!myVar!
。
另一种方法是使用带有%
的调用。这就像call echo %%myVar%%
,虽然我认为另一种方式更安全。
同样适用于您的脚本。 ERRORLEVEL
执行后getNum.exe
和 中设置了 $scope.ttabs = [];
for(p = 0; p <= $scope.no_of_groups; p++) {
$scope.ttabs[p] = [1];
console.log($scope.ttabs);
}
。