Batch file 如何从已执行的批处理文件中获取值

Batch file 如何从已执行的批处理文件中获取值,batch-file,cmd,roundhouse,Batch File,Cmd,Roundhouse,我正在尝试建立一个简单的圆房子设置,只需要几次触摸。我试图将roundhousE使用的值设置在一个中心位置,而不是每个部署批处理脚本(这是一个麻烦)。但是,当我从每个部署批处理中引用SetupVal.bat时,它会设置值,但只是停止执行部署脚本。我不知道为什么它不能继续,这真的让我很恼火 这是我的SetupVal.bat: SET product.name="####" SET database.name="%product.name%.DB" SET sql.files.directory="

我正在尝试建立一个简单的圆房子设置,只需要几次触摸。我试图将roundhousE使用的值设置在一个中心位置,而不是每个部署批处理脚本(这是一个麻烦)。但是,当我从每个部署批处理中引用
SetupVal.bat
时,它会设置值,但只是停止执行部署脚本。我不知道为什么它不能继续,这真的让我很恼火

这是我的
SetupVal.bat

SET product.name="####"
SET database.name="%product.name%.DB"
SET sql.files.directory="..\db\SQLServer"
SET server.database="(local)\SQLEXPRESS"
SET repository.path="git@roconnor:%product.name%.git"
SET version.file="_BuildInfo.xml"
SET version.xpath="//buildInfo/version"
SET environment="LOCAL"
@echo off

cd ..
SetupVal.bat
cd deployment
REM this is to make sure the path is correctly set out

"%cd%\Console\rh.exe" /d=%database.name% /f=%sql.files.directory% /s=%server.database% /vf=%version.file% /vx=%version.xpath% /r=%repository.path% /env=%environment% /simple

pause
C:\dev\Database>SetupValues.bat

C:\dev\Database>SET product.name="####"

C:\dev\Database>SET database.name=""####".DB"

C:\dev\Database>SET sql.files.directory="..\db\SQLServer"

C:\dev\Database>SET server.database="(local)\SQLEXPRESS"

C:\dev\Database>SET repository.path="git@roconnor:"####".git"

C:\dev\Database>SET version.file="_BuildInfo.xml"

C:\dev\Database>SET version.xpath="//buildInfo/version"

C:\dev\Database>SET environment="LOCAL"
这是我的一个脚本(
Local.DBDeployment.bat
):

这是我运行
Local.DBDeployment.bat时的输出:

SET product.name="####"
SET database.name="%product.name%.DB"
SET sql.files.directory="..\db\SQLServer"
SET server.database="(local)\SQLEXPRESS"
SET repository.path="git@roconnor:%product.name%.git"
SET version.file="_BuildInfo.xml"
SET version.xpath="//buildInfo/version"
SET environment="LOCAL"
@echo off

cd ..
SetupVal.bat
cd deployment
REM this is to make sure the path is correctly set out

"%cd%\Console\rh.exe" /d=%database.name% /f=%sql.files.directory% /s=%server.database% /vf=%version.file% /vx=%version.xpath% /r=%repository.path% /env=%environment% /simple

pause
C:\dev\Database>SetupValues.bat

C:\dev\Database>SET product.name="####"

C:\dev\Database>SET database.name=""####".DB"

C:\dev\Database>SET sql.files.directory="..\db\SQLServer"

C:\dev\Database>SET server.database="(local)\SQLEXPRESS"

C:\dev\Database>SET repository.path="git@roconnor:"####".git"

C:\dev\Database>SET version.file="_BuildInfo.xml"

C:\dev\Database>SET version.xpath="//buildInfo/version"

C:\dev\Database>SET environment="LOCAL"
最后,这是我的目录结构:

Database (root)
|
 \_db (SQL scripts are here)
 |_deployment (bat scripts are here)
 |_settings (ignoring contents)
 |_SetupVal.bat (This sets the values)

当您执行
SetupVal.bat
时,将控制该文件。没有返回,因此如果
setval.bat
结束,则整个批处理结构结束。而是调用您的文件:

call SetupVal.bat

setupval.bat
结束并返回control

时,您的初始批处理文件将继续下一行,谢谢,太棒了!