0

批处理脚本中的以下简单步骤给了我错误。它说

'else' is not recognized as an internal or external command,
operable program or batch file.
) was unexpected at this time.

有人可以帮忙吗?

set var_machine64 = 0

if exist "C:\Program Files (x86)" ( set var_machine64 = 1 )

if !var_machine64! == 1 (
    If exist "C:\Program Files (x86)\Microsoft" (
        echo Microsoft folder not available 
        goto End ) ) 
else (
        If exist "C:\Program Files \Microsoft" (
        echo Microsoft folder not available 
        goto End ) )

:End
Exit
4

1 回答 1

2

else必须在您关闭最后一个块的同一行,即)

if !var_machine64! == 1 (
    If exist "C:\Program Files (x86)\Microsoft" (
        echo Microsoft folder not available 
        goto End
    )
) else (
    If exist "C:\Program Files\Microsoft" (
        echo Microsoft folder not available 
        goto End
    )
)

我还冒昧地修复了文件夹名称中的缩进和多余的空格。

这解决了您当前的语法错误问题,但无济于事,因为批处理文件无论如何都无法工作。您不能在=inset语句周围使用任何空格,否则您将创建一个以空格结尾的变量,其值以 1 开头。所以:

set var_machine64=0
if exist "C:\Program Files (x86)" ( set var_machine64=1 )

会让事情变得更好。另请注意,要使用延迟扩展,您需要setlocal enabledelayedexpansion在批处理文件之前或cmd/v:on. 我只是猜你没有显示整个文件(这没关系,但考虑到这个简短片段中的错误率,我会说你应该仔细检查其他所有内容)。

随机附注:包含exit在批处理文件中并不好,因为当从交互式会话运行时,它会杀死它。如果您只想退出批处理文件(而不是整个命令处理器),请使用exit /bor goto :eof

于 2012-10-11T08:36:55.670 回答