2015-09-01 50 views
0

我剛開始學習批處理,但我無法弄清if語句在其他if語句中的分支語法。如在,如何在批處理中分支if語句

@echo off 
set first= 
set second= 
set /P first=first?: %=% 
if /I "%first%"=="y" (
    echo a.1 
    set /P second=second?: %=% 
    if /I "%second%"=="y" (
      echo b.1 
    ) else if %second%=="n" (
      echo b.2 
    ) else (
      echo b.3 
    ) 
) else if /I "%first%"=="n" (
    echo a.2 
) else (
    echo a.3 
) 
pause 

任何幫助,將不勝感激。

回答

1

你的IF邏輯非常好。你的問題是你需要延遲擴展。當解析語句時擴展%second%,並且整個複雜的IF邏輯被單次解析。因此%second%展開爲執行IF語句之前存在的值,在您的情況下它是一個空字符串。

解決方法是啓用延遲擴展,然後使用!second!擴展該值。語句解析後發生延遲擴展。

@echo off 
setlocal enableDelayedExpansion 
set first= 
set second= 
set /P first=first?: %=% 
if /I "%first%"=="y" (
    echo a.1 
    set /P second=second?: %=% 
    if /I "!second!"=="y" (
      echo b.1 
    ) else if "!second!"=="n" (
      echo b.2 
    ) else (
      echo b.3 
    ) 
) else if /I "%first%"=="n" (
    echo a.2 
) else (
    echo a.3 
) 
pause