windows - 在嵌套批处理文件中设置环境变量

标签 windows batch-file cmd

我正在尝试提取一个批处理文件的一部分,该文件将环境变量设置为另一个批处理文件。这部分内容有点复杂,我不想在多个批处理文件中重复它。我不会用我试图在嵌套批处理文件中运行的实际代码使这篇文章过于复杂,但会提供一个简单的示例来说明我正在尝试做什么并重现问题。

批处理1.cmd

cmd.exe /c setvar.cmd abc def
set abc

设置变量命令

set var=%1
set val=%2
set %var%=%val%

Batch1.cmd 中“set abc”返回的错误是这样的:

Environment variable abc not defined

我想 cmd.exe 会启动一个新环境,因为在返回 Batch1.cmd 时,变量不存在。

有没有一种方法可以嵌套批处理文件并保留它创建的环境?

最佳答案

环境 block 不在进程之间共享。当您启动一个新的 cmd 实例时,会在将控件返回到当前批处理文件之前创建、更改和销毁一个单独的环境 block ,因为它是在不同的进程中完成的,所以不会看到任何更改。

使用call setvar.cmd abc def 启动当前进程中的嵌套批处理文件。

关于windows - 在嵌套批处理文件中设置环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44892911/

相关文章:

powershell - 有没有办法使用 cmd.exe 或 powershell 将文件夹移动到垃圾箱?

wpf - 保存 WPF 窗口和位置

c++ - 如何正确格式化 DEVPROP_TYPE_DATE?

c# - ASP.NET中的Token方法,接受curl中的每个HTTP方法

batch-file - 批处理 : add a unicode header or how to add hex values or any other ways around this?

c# - 从 C# 代码停止 Windows 服务不起作用

windows - GetOpenFileName 在 64 位中失败,但在 32 位中有效?

windows - 在命令行输出中搜索字符串

windows - 改变目录停止 %~dp0 工作

java - 使用cmd打开包含多个空格的文件时出现问题