Joe*_*oey 116
注意:我假设Windows批处理文件,因为大多数人似乎没有意识到存在显着差异,只是盲目地用黑色背景DOS上的灰色文本调用所有内容.尽管如此,第一个变体也应该在DOS中工作.
最简单的方法是将变量放在批处理文件中,每个变量都有自己的set语句:
set var1=value1
set var2=value2
...
Run Code Online (Sandbox Code Playgroud)
在您的主要批次中:
call config.cmd
Run Code Online (Sandbox Code Playgroud)
当然,这也可以有条件地创建变量或者根据系统的方面创建变量,因此它非常通用.但是,任意代码都可以在那里运行,如果存在语法错误,那么您的主批也将退出.在UNIX世界中,这似乎相当普遍,特别是对于shell.如果你考虑一下,autoexec.bat就没有别的了.
另一种方式是var=value配置文件中的某种对:
var1=value1
var2=value2
...
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用以下代码段加载它们:
for /f "delims=" %%x in (config.txt) do (set "%%x")
Run Code Online (Sandbox Code Playgroud)
这利用了与以前类似的技巧,即仅set在每条线上使用.该报价是有逃避之类的东西<,>,&,|.但是,当输入中使用引号时,它们本身会中断.此外,在进一步处理使用此类字符存储的变量中的数据时,您始终需要小心.
通常,对我来说,自动转义任意输入不会导致批处理文件中的麻烦或问题.至少我还没有找到办法.当然,使用第一个解决方案,您将责任推给编写配置文件的人.
cha*_*lup 30
如果外部配置文件也是有效的批处理文件,则可以使用:
call externalconfig.bat
Run Code Online (Sandbox Code Playgroud)
在你的脚本里面.尝试创建以下a.bat:
@echo off
call b.bat
echo %MYVAR%
Run Code Online (Sandbox Code Playgroud)
和b.bat:
set MYVAR=test
Run Code Online (Sandbox Code Playgroud)
运行a.bat应该生成输出:
test
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
119440 次 |
| 最近记录: |