如何在其自己的环境中从另一个批处理程序运行批处理程序?

时间:2014-03-17 17:41:46

标签: windows batch-file cmd command-prompt batch-processing

我需要运行位于另一个文件夹中的批处理文件,该文件夹必须从另一个批处理文件中调用。

每当我从第一个调用这个批处理文件时,让我们分别称它们为Batch_A和Batch_B,第二个尝试从第一个批处理文件的目录运行。

Batch_A需要callstart Batch_B,但Batch_B需要像我自己手动双击一样运行。

这是我在第一批结束时的目前所拥有的

  

start "A thing" "%output%\thing.bat" /b

2 个答案:

答案 0 :(得分:2)

你看过push还是pop。

在调用第二个批处理文件之前,请输入“push”命令:

pushd%dynamicdirectory%
调用batchfileb.bat
POPD

答案 1 :(得分:0)

如果Batch_B被设计/编写为始终从它所在的目录运行 您也可以考虑修改Batch_B.bat

setlocal
cd /D %0\..

REM your original content

endlocal

在%0中存储批处理文件的路径。

诀窍是假设%0是一个目录然后更低一级 基于那个指令。 使用/ D也可以正确更改驱动器号。

cd命令不关心%0是否真的是一个目录。 实际上%d甚至不必存在(%0 \ dummy \ .. \ ..也可以)。

setlocal命令用于恢复工作目录 当Batch_B.bat完成时。

我注意到endlocal命令不是必需的 在这种情况下,因为它在Batch_B完成时被立即应用。