Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.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
If statement 批处理文件中的If语句出错_If Statement_Batch File - Fatal编程技术网

If statement 批处理文件中的If语句出错

If statement 批处理文件中的If语句出错,if-statement,batch-file,If Statement,Batch File,批处理脚本中的以下简单步骤给了我错误。上面说 '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_

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

'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

else
必须位于关闭最后一个块的同一行,即

我还随意修改了缩进和文件夹名中多余的空格

这修复了语法错误的直接问题,但没有帮助,因为批处理文件无论如何都无法工作。您不能在
set
语句中的
=
周围使用任何空格,因为否则您将创建一个以1开头的值结尾的变量。因此:

set var_machine64=0
if exist "C:\Program Files (x86)" ( set var_machine64=1 )
会让事情变得更好。还请注意,要使用延迟扩展,您需要在批处理文件中的延迟扩展之前设置
setlocal enabledelayedexpansion
,或者使用
/v:on
启动
cmd
。我只是猜测您没有显示整个文件(这是可以的,但是考虑到这个简短片段中的错误率,我认为您应该仔细检查所有其他内容)


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

谢谢Joey的回答。这对我很有帮助。否则一定是在同一条线上,好像正在结束“。。。这些愚蠢的空格规则每次都会让我抓狂。我希望这是更广泛的了解/记录/询问和回答,因为这是非常困难的谷歌。
set var_machine64=0
if exist "C:\Program Files (x86)" ( set var_machine64=1 )