7

次のコマンドを使用してクラスパスで変数を連結しようとしていますが、フォルダー名にスペースが含まれていると機能しません。

call concat : %variable%

どこ%variable% ={folder name containing space}

私は引用符を入れてみました:

call concat : "%variable%"

しかし、これにより、次のようにクラスパスに2つの二重引用符が追加されます:

""folder name containing space""

:concat
set CLASSPATH=%CLASSPATH%;"%1"
4

3 に答える 3

11

スペースを含む文字列に追加の二重引用符を使用しないでください。このパラメーター%~は、文字列を囲む二重引用符のすべてのペアを削除します。

@echo off &setlocal
set "Variable="my var""
echo Variable:  %Variable%
call :concat %Variable%
goto :eof

:concat
echo concat %%1:    %1
set "NewVar=%~1"
echo concat NewVar: %newvar%
goto :eof
endlocal

出力は次のとおりです。

Variable:       "my var" 
concat %1:      "my var" 
concat NewVar:  my var

文字列を二重引用符で囲むと、次のようになります。

@echo off &setlocal
set "Variable="my var""
echo Variable:  %Variable%
call :concat "%Variable%"
goto :eof

:concat
echo concat %%1:    %1
set "NewVar=%~1"
echo concat NewVar: %newvar%
goto :eof
endlocal

出力が壊れている場合:

Variable:       "my var"
concat %1:      ""my
concat NewVar:  "my
于 2013-03-18T15:02:48.117 に答える