2
我正在研究一些已經存在了很長時間的Windows .bat
文件。在最後一行,他們有一個沒有參數的單個exit
聲明。批處理文件底部是單個出口多餘?
這似乎對我來說完全是多餘的。他們的存在是否有正當理由?
我正在研究一些已經存在了很長時間的Windows .bat
文件。在最後一行,他們有一個沒有參數的單個exit
聲明。批處理文件底部是單個出口多餘?
這似乎對我來說完全是多餘的。他們的存在是否有正當理由?
的exit
withoput /b
選項將退出批處理文件和的cmd.exe的實例。
當你從資源管理器中啓動它啓動的批處理文件,沒有區別,
但是當你從一個cmd窗口啓動該批處理文件,該窗口時,該批處理文件執行exit
關閉。
通常情況下,您應該避免這種情況,因爲它很煩人的行爲,因爲exit
也會取消調用批處理文件,所以不能建立另一個調用此類文件的批處理文件。
call myAnnoyingBatch.bat
echo This won't be displayed anymore
我只知道一個很好的理由在腳本的末尾使用exit
。
當你建立一個drag&drop script that should be bullet proof,你需要一個出口,以避免像cat&dog.png
阿一些文件名的問題,所以是有區別的,但事實上,這將是煩人,我想不通爲什麼他們提出了這樣,所以我會刪除它們。 –
順便說一下,某些文件確實從總體文件中調用,並且不會導致您描述的問題。但是,它不使用'call',而是使用'start/B/wait'。除了明確地避免子文件中的「exit」問題之外,是否有任何理由呢? –
我看到'call'在當前進程中運行腳本,而'start'運行一個新腳本(相當於bash中的_sourcing_ vs _executing_),並具有關於變量生存時間等的預期結果。但是這裏不使用變量,所以不是一個因素。這也解釋了爲什麼在'call''文件中退出會退出調用進程:因爲只有一個進程。 –