2016-05-02 47 views
3

我有一個批處理文件,我的目標是隻使用一次。在進一步執行時,這個批處理文件不應該做任何事爲了解決這個任務,我決定使用If Exist來檢查在批處理腳本結尾處創建的文件。 所以在開始的時候我有這個(我去正確的目錄):如何在文件已存在時退出批處理文件開頭的批處理?

If Exist "file.txt" (
goto exit 
) 

我在文件的結尾設置exit標記。

替代方法將不勝感激,但我更喜歡這個問題的解決方案。

回答

5

將轉到manual說:

直接批處理程序跳轉到標記線。

語法 GOTO標籤

我猜標籤(我不會用這個詞標記)的名字不應該是exit作爲Windows命令具有相同名稱的存在。標籤更改爲

:exitprocess 

,做

if exist "file.txt" goto exitprocess 

但是,如果你想使用exit作爲標籤的解決方法是使用

if exist "file.txt" goto :exit 

心靈的結腸,這告訴轉到找到標籤名爲exit

致謝:@somethingdark的解決方法。

+0

雖然他應該可以說'goto:exit'。但我同意;一般來說,您應該儘量避免與命令具有相同名稱的標籤。 – SomethingDark

+0

我會盡快嘗試(明天)如果它的作品我會給你最好的答案。 –

+0

@EliR:謝謝:D它應該工作 – sjsam

5

微軟解釋爲GOTO可能性使用

goto :EOF 

退出一個批處理文件或一批子例程的處理,由此標籤EOF(文件的結束)是預定義的,並且必須不被明確地定義批處理文件。

退出一個批處理文件或一批子例程的處理的另一種方法是使用指令EXIT與參數/B,即

exit /B 

此離開剛剛批處理和不完整的命令處理,這使得上的差使用EXIT用於退出批處理子程序或從另一個批處理文件中調用批處理文件。

因此,它可以被用於此任務的任何

if exist "file.txt" goto :EOF 

if exist "file.txt" exit /B 

兩條線導致在離開當前批次處理並返回到調用過程,其是命令過程本身當批量文件被直接調用,導致退出命令過程。

+0

感謝修復,也意識到我拼錯「退出」,而是把「存在」,在我If如果存在塊。我先給了另一個人最好的回答,因爲他先回答了,但你的答案同樣好。 –