2013-04-26 147 views
0

我真的找不到這個腳本的語法有什麼問題Windows Batch If Block Syntax

if塊有問題,但我看不出是什麼問題。

@ECHO off 

set PROJECT=C:/ws/UI/Trunky/plugins/. 
set EXE=grails 
set MVN=mvn 
set DEP=--refresh-dependencies 
set CLEAN=clean 
set ASSET=ProcessAssets -Dgrails.env=production -DRESOURCE_PATH=./assets 
set TEST=test-app unit: --non-interactive 
set FIXJS=-s ./hudson-config/settings.xml package 
set INPUT="%1" 

IF "%1" == "-dep"(
    ECHO %EXE% %DEP% 
    ECHO "Refreshing dependencies." 
) IF "%1" == "-clean"(
    ECHO %EXE% %CLEAN% 
    ECHO "Cleaning up." 
)IF "%1" == "-asset"(
    ECHO %EXE% %ASSET% 
    ECHO "Processing assets." 
)IF "%1" == "-test"(
    ECHO %EXE% %TEST% 
    ECHO "Running Groovy tests." 
)IF "%1" == "-fixjs"(
    ECHO %MVN% %FIXJS% 
    ECHO "Copying JS, Running Jasmine and performing coverage report." 
)IF "%1" == "-lazy"(
    ECHO rmdir /s /q "%PROJECT%" 
    ECHO %EXE% %DEP% 
    ECHO %EXE% %CLEAN% 
    ECHO %EXE% %ASSET% 
    ECHO %MVN% %FIXJS% 
) 

ECHO "Done. Have a great day!" 
+0

你看到了什麼行爲?我沒有看到IF塊有什麼問題,你正在打開和關閉所有這些塊。編輯你的文章,並顯示你得到的輸出 – 2013-04-26 16:08:54

回答

6

'按照自己的行開始每個IF,在左括號之前留出空格。

上述問題解決問題的原因是.cmd文件期望每行一個命令,並且右括號「結束」該語句。因此,在右括號之後的附加IF在同一行上開始另一個意外的命令。

該構建

if "%1" == "somestring" (
echo "%1" 
) 

被有效地解釋爲一條線,與所述右括號和結束行回車和「如果」。

這使得一「棘手」「如果」構造

if "%1" == "somestring" (
echo "%1" 
) else (
echo "Not %1" 
) 

由於「其他」是的一部分的「如果」語法「中的其他」必須被包括在同一行作爲右括號到「繼續」'if'語句。

作爲一個簡單的語法要求,在左括號之前需要空格。

+0

謝謝,這工作,你說什麼關於刪除方法? – Cristian 2013-04-26 16:10:35

+0

不客氣,很高興它的工作。我不知道你在說什麼「刪除方法」,對不起。你能更清楚一點嗎? – james 2013-04-26 16:20:01

+0

@james對於評論有效,但不能作出回答,請添加更多信息。 – ElektroStudios 2013-04-26 16:30:28

0

上面的答案是正確的 - 這裏是一個使用你的代碼的視覺例子。

@ECHO off 

set PROJECT=C:/ws/UI/Trunky/plugins/. 
set EXE=grails 
set MVN=mvn 
set DEP=--refresh-dependencies 
set CLEAN=clean 
set ASSET=ProcessAssets -Dgrails.env=production -DRESOURCE_PATH=./assets 
set TEST=test-app unit: --non-interactive 
set FIXJS=-s ./hudson-config/settings.xml package 
set INPUT="%1" 

IF "%1" == "-dep" (
    ECHO %EXE% %DEP% 
    ECHO "Refreshing dependencies." 
) 

IF "%1" == "-clean" (
    ECHO %EXE% %CLEAN% 
    ECHO "Cleaning up." 
) 

IF "%1" == "-asset" (
    ECHO %EXE% %ASSET% 
    ECHO "Processing assets." 
) 

IF "%1" == "-test" (
    ECHO %EXE% %TEST% 
    ECHO "Running Groovy tests." 
) 

IF "%1" == "-fixjs" (
    ECHO %MVN% %FIXJS% 
    ECHO "Copying JS, Running Jasmine and performing coverage report." 
) 

IF "%1" == "-lazy" (
    ECHO rmdir /s /q "%PROJECT%" 
    ECHO %EXE% %DEP% 
    ECHO %EXE% %CLEAN% 
    ECHO %EXE% %ASSET% 
    ECHO %MVN% %FIXJS% 
) 

ECHO "Done. Have a great day!"