为什么我需要在批处理文件中提及绝对地址?

Why I need to mention an absolute address in my batch file?

我有一个 .bat 文件,它是我的 .jar 文件启动器。 .jar 文件是使用 Chrome 扩展名进行通信的本机应用程序。我有以下 .bat 文件:

@echo off
rem set JARFILE = %CD%\MyNativeApp.jar
java -jar C:\Users\reza.ahmadi\workspace\SimpleNativeApp\bin\MyNativeApp.jar
pause

.jar 和 .bat 文件在同一个文件夹中(连同我的清单)。它运作良好。

我的问题: 如果我只用文件名替换那里的路径,它就不起作用,意思是:

java -jar MyNativeApp.jar

对我不起作用。我正在使用 Win 8 机器。

如有任何意见,我们将不胜感激。

您可以通过从当前正在执行的批处理文件 (%~dp0) 获取路径来动态替换路径:

java -jar "%~dp0MyNativeApp.jar"

如果 jar 文件与批处理文件位于同一文件夹中,您可以使用

@echo off
    setlocal enableextensions disabledelayedexpansion

    for %%a in ("%~dp0\MyNativeApp.jar") do set "JARFILE=%%~fa"
    java -jar "%JARFILE%"

    pause

您可以找到 here 有关如何检索当前活动文件夹或存储批处理文件的文件夹的更多信息