批处理文件IF语句失败,"此时意外"

Kev*_*Kev 16 batch-file

我有一个批处理文件,执行以下操作:

@IF EXIST "C:\Program Files\MyAppFolder" (
  icacls "C:\Program Files\MyAppFolder" /inheritance:r
  icacls "C:\Program Files\MyAppFolder" /GRANT SYSTEM:(CI)(OI)(F)
  icacls "C:\Program Files\MyAppFolder" /GRANT Administrators:(CI)(OI)(F)
)
Run Code Online (Sandbox Code Playgroud)

单独的命令工作正常,但在一个IF语句中这样拼凑我收到此错误,脚本停止在其轨道:

(OI)(F) was unexpected at this time.

如果我在IF语句中只有一个命令,那么它可以正常工作.

我猜你在IF括号之间只允许一个陈述?

这种情况发生在Windows 2008和Windows 2003(使用ICACLS修补程序)上.

sth*_*sth 27

shell似乎认为)命令的第三行是第一行中打开的括号的右括号.您需要引用包含括号的参数:

@IF EXIST "C:\Program Files\MyAppFolder" (
  icacls "C:\Program Files\MyAppFolder" /inheritance:r
  icacls "C:\Program Files\MyAppFolder" /GRANT "SYSTEM:(CI)(OI)(F)"
  icacls "C:\Program Files\MyAppFolder" /GRANT "Administrators:(CI)(OI)(F)"
)
Run Code Online (Sandbox Code Playgroud)