Windows批处理:在字符串中,如何在字符之间添加空格?

Windows批处理:在字符串中,如何在字符之间添加空格?,windows,batch-file,Windows,Batch File,在批处理中,我有一个路径%cd%,例如c:\docu 我需要在一个新的环境变量c:\d o c u中生成 我该怎么办?谢谢制作一个名为AddSpace.bat的bat文件: AddSpace.bat 使用 NB如您所见,它还将加倍空格。这很容易修复,只需添加: if "%c%"==" " goto loop 如果“%c%”转到结束,则紧跟在之后 @echo off call :strlen0 cd len echo %len% set "final=" setlocal Enable

在批处理中,我有一个路径%cd%,例如c:\docu 我需要在一个新的环境变量c:\d o c u中生成
我该怎么办?谢谢

制作一个名为AddSpace.bat的bat文件:

AddSpace.bat 使用 NB如您所见,它还将加倍空格。这很容易修复,只需添加:

if "%c%"==" " goto loop
如果“%c%”转到结束,则紧跟在
之后

@echo off



call :strlen0 cd len

echo %len%

set "final="
setlocal EnableDelayedExpansion
 for /l %%# in (0,1,%len%) do (
    set "letter_with_space=!cd:~%%#,1! "
    set final=!final!!letter_with_space!
 )
endlocal && (
    set "final=%final%"
)

echo %final%

exit /b 0
:strlen0  StrVar  [RtnVar]
  setlocal EnableDelayedExpansion
  set "s=#!%~1!"
  set "len=0"
  for %%N in (4096 2048 1024 512 256 128 64 32 16 8 4 2 1) do (
    if "!s:~%%N,1!" neq "" (
      set /a "len+=%%N"
      set "s=!s:~%%N!"
    )
  )
  endlocal&if "%~2" neq "" (set %~2=%len%) else echo %len%
exit /b

这是通过
%cd%
完成的,因为这是您要求的,但可以通过任何变量完成。
strlen
子例程取自此处:

谢谢,我已经在批处理文件中。在代码的中间,我有%CD%,这是一个路径,我必须适应代码,使%CD%变成空格,我已经尝试了你的代码,但似乎不起作用。
if "%c%"==" " goto loop
@echo off



call :strlen0 cd len

echo %len%

set "final="
setlocal EnableDelayedExpansion
 for /l %%# in (0,1,%len%) do (
    set "letter_with_space=!cd:~%%#,1! "
    set final=!final!!letter_with_space!
 )
endlocal && (
    set "final=%final%"
)

echo %final%

exit /b 0
:strlen0  StrVar  [RtnVar]
  setlocal EnableDelayedExpansion
  set "s=#!%~1!"
  set "len=0"
  for %%N in (4096 2048 1024 512 256 128 64 32 16 8 4 2 1) do (
    if "!s:~%%N,1!" neq "" (
      set /a "len+=%%N"
      set "s=!s:~%%N!"
    )
  )
  endlocal&if "%~2" neq "" (set %~2=%len%) else echo %len%
exit /b