2017-04-10 23 views

回答

2

是的。 filetwo.batfileone.bat的環境副本開始。

這兩個過程是相當獨立的,因爲第二個文件是start ed。他們不共享環境,因此fileone.bat中的變量的變化從filetwo.bat不可見,也沒有從fileone.bat可見的filetwo.bat的環境變化。

如果filetwo.bat是從fileone.bat而不是startcall版,然後filetwo.bat需要fileone.bat繼續之前完成。一旦fileone.bat恢復,任何由filetwo.bat所做的更改將在fileone.bat的環境中可見。

如果您想在filetwo.bat內使用setlocal,則可以停止call此行爲。在setlocalfiletwo.bat所做的任何更改將是可見的fileone.bat,但setlocal後所做的任何更改都將或回退時filetwo.bat終止如果endlocal指令中遇到(在隨後進行的任何更改將在fileone.bat可見)

+0

謝謝Magoo和@ mc-nd。因爲隨機選擇答案,因爲你的兩個答案解決了我的問題。 – user7394862

1

有兩個選項

  • 兩個批處理文件相同cmd.exe實例內運行:要做到這一點,正在等待對方結束批處理文件中的一個,因此,沒有任何的併發訪問到變量。

  • 每個批處理文件都運行在不同的cmd.exe實例中:每個實例都有自己的環境,因此沒有任何對該變量的併發訪問。

這意味着在讀取/寫入同一變量時沒有任何問題,因爲這不會發生。

相關問題