(此时批次出乎意料

时间:2017-07-27 01:54:15

标签: batch-file

当批量运行时,我得到一个"(此时出乎意料"错误。为什么?我有变量和变量相等的引号。那里有一个空格在y之后,然后括号。

echo Would you like to update and restore to the latest OS? (-l -e) (Y/N)

set /p latestOS= ""

if "%latestOS%"=="y" (

echo Restoring...make sure your device is plugged in!

\idevicerestore\idevicerestore -l -e

echo Done.

timeout /t 2 /nobreak > NUL

) else (

    echo Okay. Where is the IPSW located? EX: C:\memez.ipsw

    set /p IPSWlocid= ""

    echo Alright. Is it a custom IPSW? Note that the device must be vulnerable to limera1n. (-c) (Y/N)

    set /p IPSWiscustomid= ""

    rem more stuff soon

)

:menu

它在if latestOS行失败。

2 个答案:

答案 0 :(得分:0)

您的代码存在一些问题,包括在第一个引用或转义的echo语句中使用括号,以及=符号后面的空格set /p行。但是,您的代码可以变得更加简单。我不打算解决所有问题,但这里有一些相关的改变可以提供帮助。

@echo off
set /p latestOS="Would you like to update and restore to the latest OS? (-l -e) (Y/N): "

if "%latestOS%"=="y" (
  echo You chose Yes
) else (
  echo You chose No
)

答案 1 :(得分:0)

当您有一个代码块(括号内的代码)时,批处理会将第一个未转义的)视为该块的结尾,无论它位于代码块中的哪个位置。

echo块内的第二个else正在破坏您的代码。要解决此问题,请使用^来转义) s。

echo Alright. Is it a custom IPSW? Note that the device must be vulnerable to limera1n. (-c^) (Y/N^)