Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么.bat文件在运行.NET应用程序后测试%ERRORLEVEL%时,测试的是字符串返回类型,而不是int?_.net_Exit_Return Type_Batch File - Fatal编程技术网

为什么.bat文件在运行.NET应用程序后测试%ERRORLEVEL%时,测试的是字符串返回类型,而不是int?

为什么.bat文件在运行.NET应用程序后测试%ERRORLEVEL%时,测试的是字符串返回类型,而不是int?,.net,exit,return-type,batch-file,.net,Exit,Return Type,Batch File,我正在研究如何从命令行或在bat文件中运行.NET应用程序,下面的代码用于测试应用程序的%ERRORLEVEL%(退出返回值): @if "%ERRORLEVEL%" == "0" goto success 为什么它测试的是“0”而不是0?据我所知,.NET可执行文件在退出时返回int,而不是字符串。它只是将数值强制为字符串并进行比较。如果环境变量没有值,因此%PARAM%==1的计算结果将为==1,这将导致错误,那么这将非常有用 为了检查程序的错误级别,最好按照进行评估 它只是将数值强制为字

我正在研究如何从命令行或在bat文件中运行.NET应用程序,下面的代码用于测试应用程序的%ERRORLEVEL%(退出返回值):

@if "%ERRORLEVEL%" == "0" goto success

为什么它测试的是“0”而不是0?据我所知,.NET可执行文件在退出时返回int,而不是字符串。

它只是将数值强制为字符串并进行比较。如果环境变量没有值,因此%PARAM%==1的计算结果将为==1,这将导致错误,那么这将非常有用

为了检查程序的错误级别,最好按照进行评估


它只是将数值强制为字符串并进行比较。如果环境变量没有值,因此%PARAM%==1的计算结果将为==1,这将导致错误,那么这将非常有用

为了检查程序的错误级别,最好按照进行评估


我觉得这不对,我也是这么想的。但是它出现在Pro C#2008和.NET 3.5平台的书中。这在我看来是不对的。我就是这么想的。但这是在Pro C#2008和.NET 3.5平台的书中。@Avilo:当你说“将数值强制转换为字符串”时,这像是隐式转换吗?另外,我不确定我是否理解您的示例-“因此%PARAM%==1将计算为==1,这将导致错误。”@Richard:如果未设置%PARAM%,则
%PARAM%==1
==1
相同(没有%PARAM%的值),这显然是无效的语法。但是
“%PARAM%”==“1”
变成了
“”==“1”
,这是有效的语法,而false是所需的。好的,这是有意义的。我想这只是因为我不了解bat文件sytax是如何工作的。因此,从int值%ERRORLEVEL%到字符串值并没有真正的“强制转换”,更像是用引号将int值包装在%ERRORLEVEL%中,从而将其转换为字符串以与“1”进行比较。@Richard:是的,类似于这样。它之所以有效,是因为变量甚至在字符串中也会被替换。@Avilo:当你说“将数值强制转换为字符串”时,这是否像隐式转换?另外,我不确定我是否理解您的示例-“因此%PARAM%==1将计算为==1,这将导致错误。”@Richard:如果未设置%PARAM%,则
%PARAM%==1
==1
相同(没有%PARAM%的值),这显然是无效的语法。但是
“%PARAM%”==“1”
变成了
“”==“1”
,这是有效的语法,而false是所需的。好的,这是有意义的。我想这只是因为我不了解bat文件sytax是如何工作的。因此,从int值%ERRORLEVEL%到字符串值并没有真正的“强制转换”,更像是用引号将int值包装在%ERRORLEVEL%中,从而将其转换为字符串以与“1”进行比较。@Richard:是的,类似于这样。它之所以有效,是因为变量即使在字符串中也会被替换。
IF ERRORLEVEL 1 ECHO error level is 1 or more