我有一个调用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)
你不能.进程可以将环境变量传递给子进程,但不能传递给父进程 - 在这种情况下,父进程是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)