首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >批处理文件包括变量的外部文件

批处理文件包括变量的外部文件
EN

Stack Overflow用户
提问于 2010-05-04 16:41:26
回答 7查看 138.4K关注 0票数 103

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

EN

回答 7

Stack Overflow用户

发布于 2010-05-04 16:48:49

如果外部配置文件也是有效的批处理文件,则只需使用:

代码语言:javascript
复制
call externalconfig.bat

在你的脚本里面。尝试创建以下a.bat:

代码语言:javascript
复制
@echo off
call b.bat
echo %MYVAR%

和b.bat:

代码语言:javascript
复制
set MYVAR=test

运行a.bat应该会生成输出:

代码语言:javascript
复制
test
票数 35
EN

Stack Overflow用户

发布于 2013-07-24 04:29:52

Batch使用小于和大于括号作为输入和输出管道。

代码语言:javascript
复制
>file.ext

只使用一个类似于上面的输出框将覆盖该文件中的所有信息。

代码语言:javascript
复制
>>file.ext

使用双右括号会将下一行添加到文件中。

代码语言:javascript
复制
(
echo
echo
)<file.ext

这将根据文件的行来执行参数。在本例中,我们使用了两行代码,这两行代码将使用"echo“键入。左方括号接触右方括号意味着来自该文件的信息将被输送到这些行中。

我编译了一个仅限示例的读/写文件。下面的文件被分成几个部分来解释每个部分的作用。

代码语言:javascript
复制
@echo off
echo TEST R/W
set SRU=0

在本例中,SRU可以是任何值。实际上,我们对它进行了设置,以防止在按回车键过快时发生崩溃。

代码语言:javascript
复制
set /p SRU=Skip Save? (y): 
if %SRU%==y goto read
set input=1
set input2=2
set /p input=INPUT: 
set /p input2=INPUT2: 

现在,我们需要将变量写入一个文件。

代码语言:javascript
复制
(echo %input%)> settings.cdb
(echo %input2%)>> settings.cdb
pause

我使用.cdb作为“命令数据库”的缩写。您可以使用任何扩展名。下一节将从头开始测试代码。我们不想使用在文件开头运行的set变量,我们实际上希望从我们刚刚编写的settings.cdb中加载它们。

代码语言:javascript
复制
:read
(
set /p input=
set /p input2=
)<settings.cdb

因此,我们只通过管道传输您在文件开头编写的前两行信息(您可以选择跳过设置要检查的行,以确保它正常工作),以设置input和input2变量。

代码语言:javascript
复制
echo %input%
echo %input2%
pause
if %input%==1 goto newecho
pause
exit

:newecho
echo If you can see this, good job!
pause
exit

这将显示通过管道将settings.cdb输入到括号中时设置的信息。作为一个额外的好工作激励因素,按enter并设置我们之前设置为"1“的默认值将返回一个好工作消息。使用支架管道是双向的,而且比设置"FOR“要容易得多。:)

票数 2
EN

Stack Overflow用户

发布于 2013-09-28 00:04:43

所以你只需要这样做,对吗?

代码语言:javascript
复制
@echo off
echo text shizzle
echo.
echo pause^>nul (press enter)
pause>nul

REM writing to file
(
echo XD
echo LOL
)>settings.cdb
cls

REM setting the variables out of the file
(
set /p input=
set /p input2=
)<settings.cdb
cls

REM echo'ing the variables
echo variables:
echo %input%
echo %input2%
pause>nul

if %input%==XD goto newecho
DEL settings.cdb
exit

:newecho
cls
echo If you can see this, good job!
DEL settings.cdb
pause>nul
exit
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2763875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档