我正在尝试使用 .bat
文件运行 .jar
文件。但是当我的路径中有空格时,我的批处理文件会出错。
例如
@echo off
java -jar %~dp0\..\new\myFile.jar %*
这是我的批处理文件的内容。我知道 %~dp0
会将当前的 drive letter 和 path 提供给我的批处理文件,然后 \..\
将返回到它的父目录,然后它将打开 new
目录并从中运行 jar 文件。
但这里的问题是,如果我的路径中包含空格,则批处理文件会出错:
Error: Unable to access jarfile C:\Users\Vatsal
假设我的 .jar
文件的路径是:
C:\Users\Vatsal Sura\myFolder\new\myFile.jar
我的 .bat
文件的路径是:
C:\Users\Vatsal Sura\myFolder\batch\batchFile.bat
现在,如果我将 myFolder
直接移动到 C:\
中,其中不包含任何空格,那么它不会给出任何错误,并且 .jar
文件将按预期运行。
我想知道为什么会发生这种情况,以及我应该怎样做才能使路径中的空格有效?
最佳答案
将有问题的部分放在双引号中:java -jar "%~dp0\..\new\myFile.jar"%*
如果扩展名是 C:\Users\Vatsal Sura\myFolder\new\myFile.jar
,则不带引号,-jar
只能看到第一个空间作为它的参数(即 -jar C:\Users\Vatsal
),其余部分(Sura\myFolder\new\myFile.jar
)是一个完全不同的参数,不相关到 -jar
您需要使 shell/cmd 将所有这些视为一个参数。双引号仍然允许发生任何扩展,但引号内的所有内容都将被视为单个项目(当 java 看到它时,引号将不存在)。
关于java - 如果我的批处理文件路径中有空格,为什么会出现错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42660480/