如何在vbs中设置可在调用批处理脚本中读取的环境变量

Jos*_*osh 11 vbscript

我有一个调用vbscript文件的批处理文件.我试图让vbscript文件更改一个环境变量,该变量稍后在调用vbscript文件的批处理文件中使用.

这是文件中的片段.

Parent.bat

Set Value="Initial Value"
cscript Child.vbs
ECHO Value = %VALUE%
Run Code Online (Sandbox Code Playgroud)

Child.vbs

Set wshShell = CreateObject( "WScript.Shell" )
Set wshSystemEnv = wshShell.Environment( "Process" )
wshSystemEnv("VALUE") = "New Value"
Run Code Online (Sandbox Code Playgroud)

Joe*_*Joe 6

你不能.进程可以将环境变量传递给子进程,但不能传递给父进程 - 在这种情况下,父进程是cmd.exe,它运行Parent.bat文件.

当然还有其他方式将信息传递回父批处理文件 - 输出到stdout或文件是一种显而易见的方式,例如

== Child.vbs ===
WScript.echo "New Value"

== Parent.cmd ===
for /f "tokens=*" %%i in ('cscript //nologo child.vbs') do set Value=%%i
echo %Value%
Run Code Online (Sandbox Code Playgroud)