我知道system()
函数,但它创建了自己的环境,因此这里设置的每个变量都不会转发到主控制台。我想知道是否可以发送命令,因为它将由用户编写,或者由* .bat文件执行?
我需要这个的原因是我寻找一种方法来设置父CMD进程的env变量。是的,我知道系统不希望我这样做,但也许有一些解决方法......
想法是创建应用程序,将app设置为通过输入管道发送给它的任何变量,如下所示:
echo Bob| setvar name
那么:
echo %name%
会产生Bob
整个想法是更容易从任何程序输出设置变量(我知道如何使用for
命令),同时考虑到特殊批处理字符(如^!%
)的特殊性,因为这些是{{1}}允许在文件名中。它会使许多cmd脚本变得更简单。
答案 0 :(得分:1)
您当然可以在与程序相同的控制台窗口中运行程序。这是CreateProcess
的默认行为。 MSDN有关于what happens between related processes sharing a console的更多详细信息。在继续运行自己的程序之前,您可能希望等待子进程终止。
然而,这对你的真正目标没有帮助。程序运行的窗口与其任何祖先进程的环境变量完全无关。您必须look elsewhere才能找到真正问题的解决方案。