当变量有内部空格时,如何调用concat:%variable%?

Anu*_*hta 5 cmd batch-file

我试图使用以下命令在我的类路径中连接变量,但是当文件夹名称包含空格时它不起作用:

call concat : %variable%
Run Code Online (Sandbox Code Playgroud)

哪里 %variable% ={folder name containing space}

我试过把引号:

call concat : "%variable%"
Run Code Online (Sandbox Code Playgroud)

但是这会在我的类路径中添加2个双引号,如下所示:

""folder name containing space""

:concat
set CLASSPATH=%CLASSPATH%;"%1"
Run Code Online (Sandbox Code Playgroud)

ogg*_*ter 12

在整个SET声明中加上引号:

SET "FOO=AB C"
SET "BAR=%FOO%D EF"
echo %BAR%
Run Code Online (Sandbox Code Playgroud)

输出:

AB CD EF
Run Code Online (Sandbox Code Playgroud)


End*_*oro 6

对于带空格的字符串,请勿使用其他双引号.该参数%~删除字符串周围的所有双引号对:

@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
Run Code Online (Sandbox Code Playgroud)

输出是:

Variable:       "my var" 
concat %1:      "my var" 
concat NewVar:  my var
Run Code Online (Sandbox Code Playgroud)

如果在字符串周围添加其他双引号,则会发生以下情况:

@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
Run Code Online (Sandbox Code Playgroud)

输出中断:

Variable:       "my var"
concat %1:      ""my
concat NewVar:  "my
Run Code Online (Sandbox Code Playgroud)