如何使用RootPath在bat文件中运行多个bat文件

时间:2014-05-13 11:49:15

标签: batch-file cmd batch-processing

我想运行一个批处理文件,启动另外4个批处理文件。 问题:只有第一个CMD文件被执行。

我查看了此处发布的类似问题:How to run multiple .BAT files within a .BAT file
在这里:How do I launch multiple batch files from one batch file with dependency?

与我的问题不同的是,我为每个CMD文件传递一个RootPath。

Examples given in other posts: 
call msbuild.bat
call unit-tests.bat
call deploy.bat

My code:
SET RootPath="G:\Dev Folder\Framework\MainFolder\SubFolder\JOBS\"
CALL %RootPath%Account.CMD
CALL %RootPath%Customer.CMD
CALL %RootPath%Contract.CMD
CALL %RootPath%Location.CMD

包含代码的Master.CMD文件与Account / Customer / Contract / Location cmd文件不在同一目录中,这就是我传递绝对路径的原因。 第一个命令运行得很好。然后我得到错误:

'..\Customer.CMD ' is not recognized as en internal or external command, operable program or batch file.
'..\Contract.CMD ' is not recognized as en internal or external command, operable program or batch file.
'..\Location.CMD ' is not recognized as en internal or external command, operable program or batch file.

我无法从stackoverflow上的其他Batch帖子中推断出解决方案。我是这种语言的新手,请原谅我,如果我忽略了什么。

欢迎任何和所有帮助。

1 个答案:

答案 0 :(得分:1)

这看起来像Account.cmd重置RootPath。除非用setlocal隔离它们,否则env变量是(会话)全局变量。要解决此问题,您可以更改名称(如您所做)或在批处理文件中使用setlocal。无论如何,这通常都是很好的做法,因为它有助于避免意外/不需要的副作用。 以下是help setlocal的引用:

  

在批处理文件中开始环境更改的本地化。   发布SETLOCAL后进行的环境更改是本地的   批处理文件。必须发出ENDLOCAL才能恢复之前的状态   设置。到达批处理脚本的末尾时,隐含   对于由此发出的任何未完成的SETLOCAL命令执行ENDLOCAL   批处理脚本。