调用另一个批处理文件的批处理文件失败

时间:2015-06-13 21:13:16

标签: windows batch-file cmd

我有一个批处理文件a.bat,实际上看起来像这样:

call some.bat

java -cp "saxon9he.jar" net.sf.saxon.Transform  abc.xml des.xsl > des.xml

call subfolder\other.bat

other.bat中的subfolder实际上看起来像这样:

call yet_another_batch.bat

java -cp "../saxon9he.jar" net.sf.saxon.Transform any.xml try.xsl > try.xml
java -cp "../saxon9he.jar" net.sf.saxon.Transform ../some.xml test.xsl

因此,在第一个文件(a.bat)中,我将同一文件夹中的另一个批处理文件和将xml文件写入同一文件夹的同一文件夹中的一些xsl脚本调用。 从第一批脚本(a.bat)开始,我想调用subfolder\other.bat。但是,当我这样做时,它无法调用yet_another_batch.bat中的subfolder以及subfolder中的xsl脚本,并且它找不到saxon9he.jar。

这样做的正确方法是什么?我是否必须将文件夹名称添加到subfolder\other.bat中引用的所有文件中?看起来有点麻烦。我在Windows 7上,如果这改变了什么。

1 个答案:

答案 0 :(得分:2)

将两行行添加到other.bat,如下所示:

pushd "%~dp0"
call yet_another_batch.bat

java -cp "../saxon9he.jar" net.sf.saxon.Transform any.xml try.xsl > try.xml
java -cp "../saxon9he.jar" net.sf.saxon.Transform ../some.xml test.xsl
popd

使用pushd,other.bat将从其自己的文件夹中执行它的命令。 popd将其设置回来,以便在a.bat

中返回时不会更改目录