0

我正在尝试在命令提示符下使用以下命令:

    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% 

但是我想在一行上运行这些命令作为一个命令而不是两个单独的命令,这可能吗?

4

2 回答 2

0

你的问题很模糊。

您的意思是即使started 命令尚未完成,该行也会显示该值?

或者您的意思是显示的值是命令errorlevel之前的值start,而不是命令建立的值start(虽然响应是在ed命令完成后获得的?start

我会尝试

setlocal enabledelayedexpansion
start .....&echo !errorlevel!

但它仍然是 2 行,除非您使用setlocal以下行@echo off(以习惯方式)

于 2014-08-06T00:52:59.207 回答
0

首先,在第一行添加“& echo %ERRORLEVEL%”应该可以满足您的需求。& 字符是用于在一行中排列两个命令的标准字符(如果您没有更改系统上的默认值)。

我无法完全重现您的问题。“start /wait msiexec /i ..” 在我的系统上等待正常。但是在一个错误的情况下,我在一行中也看到了另一个 ERRORLEVEL 值而不是在两行中,所以这里的情况有点奇怪。我在 start.exe 中看到了一些奇怪的东西并且不太喜欢它但是为什么你如此渴望从命令行调用所有东西呢?根据我的经验,从批处理文件(使用“调用 msiexec ...”)执行此操作更安全。

但还有一个提示:

尝试使用 /qb 而不是 /qn。在我的情况下,这导致了相同的错误级别。似乎它只是完全等待一个对话框或者可能是这样。

于 2014-08-05T19:37:32.543 回答