行太早执行

时间:2018-02-12 11:38:59

标签: windows cmd windows-10

我刚刚制作了一个小实用程序,但我遇到了一个奇怪的(但可以避免的)问题。

if /I %ans%==0 (
set /p ans1="Do you want to save your custom graphics ?(y/n): "
if "%ans1%"=="y" ( PAUSE )
xcopy backup\graphics "%id%\data\base\graphics" /E
)

当我执行程序的这一部分时,由于某种原因,第二个if在用户可以回答问题之前执行,这意味着每次都会跳过它,因为字符串保持为空。 我真的无法理解它这样做的原因,即使我找到了另一种方式,我真的想要解释它为什么会发生。

由于

1 个答案:

答案 0 :(得分:0)

所以,多亏了@Stephan,这里有两个解决方案:

  • 使用延迟变量,使用exist_bar -> exists_bar_helper -> bar (woops) // oh no // I cannot access that var, this is unrecoverable error AAAAAAAA 并将setlocal enabledelayedexpansion设置为%asn1%

  • 使用选择而不是第二个if,在我的情况下效果更好