gpt4 book ai didi

java - 当路径有空间时使用批处理循环构建类路径时出现问题

转载 作者:行者123 更新时间:2023-11-30 08:53:08 25 4
gpt4 key购买 nike

我花了一些时间来解决这个问题。我的目标只是通过在目录中使用批处理文件循环来构建 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”中运行批处理文件,程序将遇到错误“uncrecognize c:\project command not found”。

如果路径中没有空格,它会按预期工作。

希望有人能提供解决方案。

谢谢,

最佳答案

引号是你的saviour

@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

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

关于java - 当路径有空间时使用批处理循环构建类路径时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29878808/

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