batch-file - 批处理文件包含变量的外部文件

标签 batch-file transclusion

我有一个批处理文件,我想包含一个包含一些变量(例如配置变量)的外部文件。可能吗?

最佳答案

注意:我假设 Windows 批处理文件,因为大多数人似乎没有意识到存在显着差异,只是盲目地用黑色背景 DOS 上的灰色文本调用所有内容。尽管如此,第一个变体应该也可以在 DOS 中运行。

可执行配置

最简单的方法是将变量本身放入批处理文件中,每个变量都有自己的 set声明:

set var1=value1
set var2=value2
...

在你的主要批处理中:

call config.cmd

当然,这还允许有条件地或根据系统的各个方面创建变量,因此它非常通用。但是,任意代码都可以在那里运行,如果存在语法错误,那么您的主批处理也将退出。在 UNIX 世界中,这似乎相当常见,尤其是对于 shell。如果你想一想,autoexec.bat没有别的。

键/值对

另一种方式是某种 var=value配置文件中的对:

var1=value1
var2=value2
...

然后您可以使用以下代码片段来加载它们:

for /f "delims=" %%x in (config.txt) do (set "%%x")

这使用了与之前类似的技巧,即仅使用 set在每一行上。引号是为了逃避像 < 这样的事情。 , > , & , | 。但是,当输入中使用引号时,它们本身就会中断。此外,在进一步处理使用此类字符存储的变量中的数据时,您始终需要小心。

一般来说,自动转义任意输入以在批处理文件中不引起头痛或问题对我来说似乎是不可能的。至少我还没有找到办法。当然,使用第一个解决方案时,您会将这一责任推给编写配置文件的人。

关于batch-file - 批处理文件包含变量的外部文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2763875/

相关文章:

batch-file - 用批处理文件播放隐形音乐?

batch-file - 在 cmd 中获取整数变量的格式化输出

具有 ng-repeat 的 AngularJS 隔离指令打破了嵌入范围

javascript - Angular : Accessing parent scope in a transcluded directive that contains nested ng-repeat

javascript - Angular2 中列表组件的自定义模板(没有 ng-content 的包含)

python - 使用 .bat 和 .ini 联网 .py 文件

windows - 文件移动计划任务未运行bat文件

batch-file - TASKKILL 和逻辑运算符