使用命令提示符调用子目录中的批处理文件

9

我想使用批处理文件调用子目录中的另一个批处理文件,例如,如果我的文件系统如下所示:

MainFolder
    main.bat
    FirstDirectory
    SecondDirectory
        foo.bat

那么 main.bat 可能看起来像这样:

echo on
REM This lines tells the user what this bat file is doing
call ant
call \SecondDirectory\foo.bat

我正在寻找一行解决方案,但我认为这并不存在。不幸的是,我并不总是想用批处理文件来完成,而是希望直接从命令行完成。

3
如果您删除前面的反斜杠,它应该可以工作:call SecondDirectory\foo.bat - Blorgbeard
我不确定我理解问题,你列出的主批处理文件正在调用子目录中的另一个批处理文件(尽管开头的\强制它关闭根目录)。实际问题是什么?如果您只想将最后两行合并为一行,则可以使用&&和||运算符,如果第一个命令成功,则运行&&后面的命令,而||仅在前面的命令失败时运行其后面的命令。 - Eric Tuttleman
1个回答

16

您确实可以使用call命令从另一个批处理文件中调用批处理文件。正如@Blorgbeard所述,问题在于前导反斜杠\。删除它将表明SecondDirectory相对于当前工作目录。

call SecondDirectory\foo.bat

需要注意的是,call命令实际上是在运行时插入被调用的代码。要小心避免变量名称冲突


7
使用调用".\folder\file.bat"同样可以工作("."表示当前目录,引用路径通常是一个好习惯)。 - Anders
这是我所问问题的答案。不幸的是,它并不是我所面临问题的解决方案,但它确实帮助我找到了问题的解决方法。因此,谢谢你,两次。 - KevinO

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接