微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Windows – 从不同目录中的另一个批处理文件调用批处理文件 – 找不到资源

我正在使用installshield,并有一组批处理文件,我想作为安装过程的一部分运行.而不是从installshield执行每个批处理文件,我想创建一个执行所有批处理文件的批处理文件.

我的问题是,调用批处理文件从其他目录中放置两个目录.当批处理文件尝试调用他人,因为找不到他们需要的资源时,它们无法运行.看来,当他们从批处理文件执行两个目录时,由于某些原因使用调用批处理文件的相对路径.我的假设是否正确?

我正在调用一个批处理文件一个批处理文件,用于为h2数据库添加星号,调用如下所示:

call h2\bin\h2.bat

如果我在命令提示符下转到/ h2 / bin目录,h2.bat运行正常,但是一旦我从调用批处理文件中运行它,这是我得到的错误.

Error: Could not find or load main class org.h2.tools.Console

如何在不使用调用批处理文件路径的情况下从另一个调用一个批处理文件

说明

It seems that when they are executed from the batch file two
directories up they are for some reason using the relative path of the
calling batch file. Is my assumption correct?

是的,你的假设是正确的.调用批处理文件不会更改当前工作目录.将找到主批处理文件,因为您提供了正确的相对路径,但从目前工作目录的角度而言,不会从包含主批处理文件的目录中看到所有其他相对路径.

%〜dp0是你的朋友,它产生包含该字符序列的批处理文件的驱动器盘符和路径.使用它作为相对路径的基础,您的批处理文件将工作,无论谁从哪里调用它们.

例:

虚拟的h2.bat不行:

@echo off
h2.exe start

工作h2.bat:

@echo off
"%~dp0\h2.exe" start

有关%〜dp0的更多说明,请参见What does %~dp0 mean,and how does it work?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐