我正在尝试从批处理文件Session.bat
设置环境变量,该文件是从我的C ++代码生成的,存储一些会话相关数据,这些数据将在环境变量中设置,如下所示
Session.bat
set SessionID_User=SAsdC123ASCascs123
echo %SessionID_User%
我尝试使用CreateProcess
和system
从我的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()不同,通常是
答案 0 :(得分:2)
当您从可执行文件中执行批处理文件时,您将创建一个新进程。
批处理文件在该新进程中本地设置环境变量。
无法将它们导回到父进程,但有一些方法可以回传结果,包括:
reg
和朋友)。