Windows BATCH 文件在我的变量中给出了奇怪的空格

Windows BATCH 文件在我的变量中给出了奇怪的空格

我试图制作一个简单的批处理文件,扫描变量 X 中是否有空格,然后创建一个不包含任何空格的修改变量 Xmodified。这是我使用的代码:

@echo off
set Xmodified=[
set "X=I am good"

:space1
IF "%X:~0,1%" == " " ( goto space2 ) Else ( set Xmodified=%Xmodified%%X:~0,1% )
goto space2

:space2
IF "%X:~1,1%" == " " ( goto space3 ) Else ( set Xmodified=%Xmodified%%X:~1,1% )
goto space3

:space3
IF "%X:~2,1%" == " " ( goto space4 ) Else ( set Xmodified=%Xmodified%%X:~2,1% )
goto space4

:space4
IF "%X:~3,1%" == " " ( goto space5 ) Else ( set Xmodified=%Xmodified%%X:~3,1% )
goto space5

:space5
IF "%X:~4,1%" == " " ( goto space6 ) Else ( set Xmodified=%Xmodified%%X:~4,1% )
goto space6

:space6
IF "%X:~5,1%" == " " ( goto space7 ) Else ( set Xmodified=%Xmodified%%X:~5,1% )
goto space7

:space7
IF "%X:~6,1%" == " " ( goto space8 ) Else ( set Xmodified=%Xmodified%%X:~6,1% )
goto space8

:space8
IF "%X:~7,1%" == " " ( goto space9 ) Else ( set Xmodified=%Xmodified%%X:~7,1% )
goto space9

:space9
IF "%X:~8,1%" == " " ( goto Finishing ) Else ( set Xmodified=%Xmodified%%X:~8,1% )
goto Finishing

:Finishing
set Xmodified=%Xmodified:~1%
goto Display

:Display
cls
echo Your Processed Result:%Xmodified%
pause >nul

输出:

Your Processed Result: I a m g o o d

有人能告诉我为什么输出的每个字母后面都有空格吗?这些空格是从哪里来的?

我怎样才能使输出像这样?

Your Processed Result:Iamgood

请帮忙。谢谢。

答案1

如何从变量中删除空格?

如果您要使用forif(其中有使用括号的表达式),那么您将需要使用延迟扩展。

然而,有一个更简单的解决方案,可以一次性删除所有空格:

@echo off
setlocal
set "X=I am good"
set _result=%X: =%
echo %_result%
endlocal

相关内容