使用"设置/ p"在C ++中

时间:2015-11-23 00:41:11

标签: c++ windows cmd

我试图设置一个Windows命令行环境变量(以帮助自动启动需要用户输入的Windows进程),然后通过system()回显它。

#include <iostream>
using namespace std;

int main() {
    system("set /p foo= foo=");
    system("echo %foo%");
    system("pause");
    return 0;
}

运行后,我会收到此反馈:

  

富=酒吧

     

%FOO%

     

按任意键继续。 。

要使该计划有效,我需要收到&#34; bar&#34;,%foo%的内容,但这种情况不会发生。

奇怪的是,如果直接输入命令行,代码就可以工作。

C:\Users\JohnDoe>set /p foo= foo=
foo=bar

C:\Users\JohnDoe>echo %foo%
bar

为什么C ++代码不起作用?

编辑:

使用建议的更改,如下所示:

#include <iostream>
using namespace std;

int main() {
    system("set /p foo=\" Enter foo= \" & echo %foo%");
    system("pause");
    return 0;
}

返回此反馈:

  

输入foo = bar

     

%FOO%

     

按任意键继续。 。

使用以下代码有效,但会打开第二个窗口:

#include <iostream>
using namespace std;

int main() {
    system("set /p foo=\" Enter foo= \" & start echo %foo%");
    system("pause");
    return 0;
}
  

输入foo = bar   按任意键继续 。 。

然后在第二个窗口中:

  

2 个答案:

答案 0 :(得分:2)

system运行命令解释程序的新实例。在该过程中设置环境变量对程序自身的过程没有影响。不幸的是,C ++标准库对环境变量的支持非常有限:只是一个函数getenv

出于您的目的,您可以在Windows中发出system( "set foo=bar & run_that_program" );之类的调用。

答案 1 :(得分:0)

您可以使用SetEnvironmentVariable功能直接在C程序中设置环境变量。 (当然,您可以使用常用的C I / O函数提示用户设置值。)

这样的变量应该由你用system()开始的程序继承。