2016-01-25 43 views
0

對於我的生活,我無法弄清楚爲什麼我不能用這個簡單的批處理腳本使用GOTO回顯測試退出。路徑存在。這應該非常簡單,但缺少一些東西。如果我運行這個腳本,我應該回顯「Test Exit」,但即使路徑存在,我也會得到「Test Install」。任何幫助?batch-Goto Loop如果發現程序

@echo off 

:TestInstall 
Echo Test Install 

pause 

IF EXIST "C:\Program Files\Microsoft Office\root\Office16\Excel.exe" (
    GOTO TestExit 
    )ELSE{ 
    GOTO TestInstall 
    } 

:TestExit 
Echo Test Exit 

pause 
+1

是什麼讓你覺得你可以混合使用大括號和大括號?如果您閱讀「IF」命令的幫助,它將向您顯示在需要使用ELSE子句時如何使用語法。 – Squashman

+0

@Squashman什麼都沒有。這是我的錯誤 –

回答

1
)ELSE{ 
GOTO TestInstall 
} 

咦?爲什麼你使用不同的parantheses /括號?另外一批是相當挑剔的空間 - 有必須一前else後:

) ELSE (
GOTO TestInstall 
) 
+0

我的錯誤。沒有看到不同的括號 –

1

你想是這樣的:

@echo off 

:install 
echo install 
pause 

IF EXIST "C:\Program Files\Microsoft Office\root\Office16\Excel.exe" (
    goto install 
) ELSE (
    goto exit 
) 

:exit 
echo exit 
pause 

那麼,你必須)ELSE{這是不正確的,它必須被翻譯爲,並用圓括號括起來而不是大括號。還要忘記放置空格。

請注意,如果文件不存在,您將在:installgoto install指令之間運行一個無限循環。

此外,在腳本的開始處,因爲:install標籤位於頂部,所以在執行任何檢查之前它將運行install部件。

如果您不希望發生這種情況,您應該將安裝部分移到if語句下。