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 )