Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当路径有空间时,使用批处理循环生成类路径时出现问题_Java_Batch File - Fatal编程技术网

Java 当路径有空间时,使用批处理循环生成类路径时出现问题

Java 当路径有空间时,使用批处理循环生成类路径时出现问题,java,batch-file,Java,Batch File,我花了一些时间来解决这个问题。我的目标只是通过使用批处理文件循环目录来构建java类路径 这是我的节目: @echo off @setlocal enableextensions @cd /d "%~dp0" set "CURRENT_DIR=%cd%" setx STSPOS_PS "%CURRENT_DIR%" /m set "BIN=%CURRENT_DIR%\bin" set "LIB=%CURRENT_DIR%\lib" set "LOG=%CURRENT_DIR%\log" se

我花了一些时间来解决这个问题。我的目标只是通过使用批处理文件循环目录来构建java类路径

这是我的节目:

@echo off

@setlocal enableextensions
@cd /d "%~dp0"

set "CURRENT_DIR=%cd%"
setx STSPOS_PS "%CURRENT_DIR%" /m
set "BIN=%CURRENT_DIR%\bin"
set "LIB=%CURRENT_DIR%\lib"
set "LOG=%CURRENT_DIR%\log"
set "jdk=%CURRENT_DIR%\jdk"
setx JAVA_HOME "%JDK%" /m

FOR %%X in ("%LIB%\*.jar") DO CALL :AddToPath "%%~dpnfX"

FOR %%X in ("%JDK%\lib\*.jar") DO CALL :AddToPath "%%~dpnfX"

FOR %%X in ("%JDK%\jre\lib\*.jar") DO CALL :AddToPath "%%~dpnfX"

FOR %%X in ("%JDK%\jre\lib\ext\*.jar") DO CALL :AddToPath "%%~dpnfX"

%BIN%/service.bat
echo %CLASSPATH%
GOTO :EOF

:AddToPath
SET CLASSPATH=%~1;%CLASSPATH%
:EOF
我遇到的问题是,当目录在路径中包含空间时,如果我在文件夹“c:\project abc”中运行批处理文件,则程序将遇到错误“UNCC:\project command not found”

如果路径中没有空间,则按预期工作

希望有人能提供解决方案

谢谢,

引号是您的


虽然我会使用
for/r
和延迟扩展,这样一切都可以通过一个循环完成,而不需要子程序。

我想我在做了进一步的研究后找到了解决方案

我换线

set "CURRENT_DIR=%cd%"

因此,输出将是“C:\projectabc”到“C:\projec~1”


谢谢。

短路径并不总是启用的,但它是一个可行的解决方案。
set "CURRENT_DIR=%cd%"
FOR %%F in ("%cd%") DO set "CURRENT_DIR=%%~sF"