我想运行一个批处理文件,启动另外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帖子中推断出解决方案。我是这种语言的新手,请原谅我,如果我忽略了什么。
欢迎任何和所有帮助。
答案 0 :(得分:1)
这看起来像Account.cmd
重置RootPath
。除非用setlocal
隔离它们,否则env变量是(会话)全局变量。要解决此问题,您可以更改名称(如您所做)或在批处理文件中使用setlocal
。无论如何,这通常都是很好的做法,因为它有助于避免意外/不需要的副作用。
以下是help setlocal
的引用:
在批处理文件中开始环境更改的本地化。 发布SETLOCAL后进行的环境更改是本地的 批处理文件。必须发出ENDLOCAL才能恢复之前的状态 设置。到达批处理脚本的末尾时,隐含 对于由此发出的任何未完成的SETLOCAL命令执行ENDLOCAL 批处理脚本。