如何从批处理文件执行的程序中存储变量

时间:2016-12-02 07:00:08

标签: batch-file

我想知道如何存储由.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

2 个答案:

答案 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); }

相关问题