如何将子进程的值传递给父进程cmd.exe shell?

3

我有一个运行子进程并需要收集子进程输出以设置三个变量的Windows cmd.exe脚本。子进程执行一些操作,并打印出三个值。

如何编写父进程以收集子进程打印的值?

我可以对子进程进行任何修改来实现此目的,但父进程脚本必须编写为cmd.exe批处理文件。


你如何启动子进程?使用 cmd.exe /cstart cmd.exe /c 或者调用 child.bat? - jeb
目前,我是通过“perl脚本名称”来启动它的 - 但如果有帮助的话,我也可以使用其他两种方式之一。 - Martin
2个回答

3

子进程设置环境变量是否可接受?父进程应该能够获取这些变量。

child.bat

set VAR1=123
set VAR2=321

parent.bat

echo %VAR1%
echo %VAR2%
call child.bat
echo %VAR1%
echo %VAR2%

无论使用哪种语言的子程序/脚本,您都可以设置环境变量 - 有多种方法可以从它们中设置环境变量。


可以用!我找不到如何在子进程中设置环境变量(它是perl,更新%ENV哈希表并没有更新父进程中的变量)。相反,我让子进程将“set var = xxx”命令打印到文件中,然后从父进程作为批处理文件运行该文件。 - Martin

2
< p > mr.b 的答案是正确的,因为这两个批处理脚本都在同一个 cmd.exe 进程中运行。实际上,子进程无法写入父进程的环境变量。请尝试其他 IPC 方法。 < /p >

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接