我已经阅读了关于这个的大部分主题,并且理解复杂的if/then块是windows命令行中的一个难题,所以我尝试缩小范围,但最终还是出现了“(此时出乎意料”的错误。
我觉得这和设置%confirm%的位置有关,但我真的不确定。最初我在块中有一个goto,我读到它是一个no-go,所以我尝试使用嵌套的if/if/else来解决这个问题。没有骰子。
我想不出比我现在所做的更基本的事情了,因为命令shell的内部工作超出了我的能力范围。
第一个版本:

@echo off

TITLE cleanup

:: make user confirm they want to cleanup old epub conversion files
set /p confirm = "Are you sure? (y/n): "

if %confirm% == y (
    rm ePub
    rm IP
    rm OP
    md IP
    exit
) else (
    if %confirm% == n (
        exit
    ) else (
        set /p confirm = "Are you sure? (y/n): "
    )
)

当前缩略版本:
 @echo off

TITLE cleanup

:: make user confirm they want to cleanup old epub conversion files
set /p confirm = "Are you sure? (y/n): "

if %confirm% == y (
    rm ePub
    rm IP
    rm OP
    md IP
    exit
) else (
    exit
)

最佳答案

当变量实际上为空时,您的代码已破坏语法。尝试

if "%confirm%" == "y" (

这保证了在==的左边总是有东西。

关于windows - (目前无法预料,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14284295/

10-13 09:39