使用批处理文件和C ++

时间:2016-11-09 10:39:39

标签: c++ windows batch-file

我正在尝试从批处理文件Session.bat设置环境变量,该文件是从我的C ++代码生成的,存储一些会话相关数据,这些数据将在环境变量中设置,如下所示

Session.bat

的内容

set SessionID_User=SAsdC123ASCascs123 echo %SessionID_User%

我尝试使用CreateProcesssystem从我的C ++代码执行它,但似乎没有效果。

虽然当我尝试查看要设置的环境变量时,批处理文件是在exe文件中执行的,没有任何异常,但是我没有在变量列表中看到它我在控制台上打印set我看不到 SessionID_User=SAsdC123ASCascs123

以下是我完成流程的方式

C:\Users\admin\Desktop>Session.exe

C:\Users\admin\Desktop>set SessionID_User=SAsdC123ASCascs123

C:\Users\admin\Desktop>echo SAsdC123ASCascs123
SAsdC123ASCascs123

C:\Users\admin\Desktop>

当我从我的exe执行批处理文件时,为什么环境变量没有设置,但在执行批处理文件时设置了所有好处?

另一个问题是,Hows CreateProcess与此用例中的system()不同,通常是

1 个答案:

答案 0 :(得分:2)

当您从可执行文件中执行批处理文件时,您将创建一个新进程。

批处理文件在该新进程中本地设置环境变量。

无法将它们导回到父进程,但有一些方法可以回传结果,包括:

  • 通过标准输出流。
  • 通过存储的文件。
  • 通过Windows注册表(例如命令reg和朋友)。