我试图在命令提示符中使用以下命令:
start /wait msiexec /i WebPlatformInstaller_3_10_amd64_en-US.msi /qn /l*v c:\webplatform.log & echo %ERRORLEVEL%
我遇到的问题是该命令在msiexec进程完成之前返回%ERRORLEVEL%。
当我单独运行这两个命令时(在命令提示符或批处理脚本中),即运行以下命令,它会正确返回%ERRORLEVEL%(在该过程完成后):
start /wait msiexec /i WebPlatformInstaller_3_10_amd64_en-US.msi /qn /l*v c:\webplatform.log
echo %ERRORLEVEL%
但是我想将这些命令作为一个命令在一行上运行,而不是两个单独的命令,这可能吗?
答案 0 :(得分:0)
首先,在第一行添加“& echo%ERRORLEVEL%”应该可以达到你想要的效果。 &符号是在一行上排队两个命令的标准字符(如果您没有更改系统上的默认值)。
我无法完全重现您的问题。 “启动/等待msiexec / i ..”在我的系统上等待正常。 但是在ERROR的情况下,我在一行中看到了另一个ERRORLEVEL值而不是两行,所以这里的事情有点奇怪。 我在start.exe中看到了一些奇怪的东西,并且不喜欢它 但是为什么你如此渴望从命令行调用所有内容? 根据我的经验,从批处理文件(使用“call msiexec ...”)执行此操作更安全。
但还有一个提示:
尝试使用/ qb而不是/ qn。在我的情况下,这导致了相同的ERRORLEVEL。似乎它只能通过一个对话框完全等待,或者也许是行为。
答案 1 :(得分:0)
你的问题不明确。
您的意思是即使start
ed命令尚未完成,该行仍会显示该值吗?
或者您的意思是显示的值是errorlevel
命令之前start
的值,而不是start
命令建立的值(尽管获得了响应 start
ed命令完成后?
我试试
setlocal enabledelayedexpansion
start .....&echo !errorlevel!
它仍然是2行,除非您使用setlocal
作为@echo off
之后的行(按照习惯的方式)