对于call,“同一进程,变量互通”。
对于start,概括两句话:“不同进程不能传值”,“相同进程单向传值,老子传儿子,非儿子传老子”。
|
|
|
|
|
|
| ![]() |
|
|
|
|
|
用call: 应用示例中在main中定义了变量a,值为1,在child中定义了变量b,值为20, Main.bat首先执行child.bat, child.bat将执行echo %a%, 能正常显示1 call完之后再执行echo %b%,能正常显示20 call的时候,他们拥有同一个壳cmd.exe,在同一个进程当中,所以他们的变量是互通的 | |
|
|
|
|
|
|
|
| |
|
| ![]() |
|
|
|
|
|
用start: main.bat首先执行child.bat, child.bat执行echo %a%可以在子进程窗口中显示main中的变量a的值1 然后Main.bat执行echo %b%, 但是父进程无法访问子进程,所以不能显示变量b的指20 他们拥有两个壳cmd.exe,但child.bat可以看成是main.bat的子进程,子进程可以读取父进程中的变量(即a的值)。 | |
|
|
|
|
本文详细解析了在批处理脚本中使用call和start命令时,变量如何在父进程与子进程间传递的机制。通过具体示例说明了call使同一进程中的变量互通,而start则限制了不同进程间的变量传递,仅允许子进程读取父进程变量。



3995

被折叠的 条评论
为什么被折叠?



