3

我知道这个system()函数,但是它创建了它自己的环境,所以这里设置的每个变量都不会转发到主控制台。我想知道是否可以发送由用户编写的命令或由 *.bat 文件执行的命令?

我需要这个的原因是我在寻找一种方法来设置父 CMD 进程的 env 变量。是的,我知道系统不希望我这样做,但也许有一些解决方法......

想法是创建将通过输入管道发送给它的任何内容设置为变量的应用程序,如下所示:

echo Bob| setvar name

那么:

echo %name%

会产生Bob

整个想法是更容易地从任何程序输出设置变量(我知道如何使用for命令),同时考虑到特殊批处理字符的特性,例如^!%文件名中允许使用这些字符。它会使许多 cmd 脚本变得更简单。

4

1 回答 1

1

您当然可以在与您的程序相同的控制台窗口中运行程序。这是CreateProcess. MSDN 有更多关于共享控制台的相关进程之间发生的事情的详细信息。您可能希望等待子进程终止,然后再继续运行您自己的程序。

但是,这对您的真正目标没有帮助。程序运行的窗口与其任何祖先进程的环境变量完全无关。您将不得不在别处寻找解决实际问题的方法。

于 2012-05-21T16:09:03.433 回答