2016-04-04 10 views
3

私はいくつかの仕事をするためのWindowsバッチスクリプトを作成しようとしています。Windowsバッチ:プロンプトを使用してIF ELSE

@echo off 

cls 

set /P AA="Is this information correct (Y/[N]) ? " 
if /I "%AA%" == "Y" (

    echo Setting up %DATE% %TIME% ... 

    echo Copying stuff to the places ... 

    set /P BB="Overwrite (Y/[N]) ? " 
    if /I "%BB%" == "Y" (

     echo Executing xxx ... 

    ) else echo NOPE1 [%BB%] 

    set /P CC="Overwrite (Y/[N]) ? " 
    if /I "%CC%" == "Y" (

     echo Executing xxx ... 

    ) else echo NOPE2 [%CC%] 

    echo All set ! 

) else echo Setup aborted [%AA%] ! 

pause 

2番目と3番目の回答は常に空です。プロンプトから引用符を削除すると、「?」と表示されます。キャラクター。コードの何が間違っていますか?

ありがとうございました。

+2

あなたは[遅延拡張](http://ss64.com/nt/delayedexpansion.html) – npocmaka

+2

[遅延拡張]の短いデモ(http://stackoverflow.com/a/30284028)が必要です。/2152082) – Stephan

+1

ありがとうございます。やった。私は正しいコードを投稿します! – Yore

答えて

3

これはナンセンスのようなものですが、とにかく、原因「遅延拡張」に私がにコードを変更:

@echo off 
Setlocal EnableDelayedExpansion 

cls 

set /P AA="Is this information correct (Y/[N]) ? " 
if /I "%AA%" == "Y" (

    echo Setting up %DATE% %TIME% ... 

    echo Copying stuff to the places ... 

    set /P BB="Overwrite (Y/[N]) ? " 
    if /I "!BB!" == "Y" (

     echo Executing xxx ... 

    ) else echo NOPE1 [!BB!] 

    set /P CC="Overwrite (Y/[N]) ? " 
    if /I "!CC!" == "Y" (

     echo Executing xxx ... 

    ) else echo NOPE2 [!CC!] 

    echo All set ! 

) else echo Setup aborted [%AA%] ! 

pause 

そして、それは働いています!ありがとうnpocmakaとStephan