gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 12:23:53 25 4
gpt4 key购买 nike

我正在使用 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 是你的 friend ,它产生包含该字符序列的批处理文件的驱动器号和路径。使用它作为相对路径的基础,无论谁从哪里调用它们,您的批处理文件都可以工作。

示例:

无法运行的虚构 h2.bat:

@echo off
h2.exe start

工作的 h2.bat:

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

参见 What does %~dp0 mean, and how does it work?有关 %~dp0

的更多解释

关于windows - 从不同目录中的另一个批处理文件调用批处理文件 - 找不到资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16718442/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com