2017-04-10 77 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实例中:每个实例都有自己的环境,因此没有任何对该变量的并发访问。

这意味着在读取/写入同一变量时没有任何问题,因为这不会发生。