这是我正在使用的批处理代码。
set fullstring=
set string=testago
echo %string%>x&FOR %%? IN (x) DO SET /A strlength=%%~z? - 2&del x
for /L %%a in (1,1,%strlength%) do (
set b=%%a - 1
set c=%%a
set this=%string:~%%b,%%c%
set fullstring=!fullstring!%this%
)
echo %fullstring%
pause
这是将一个字符串(一个字符串)逐个字符读回到另一个(完整字符串)。我需要知道如何从for循环中覆盖完整字符串。
答案 0 :(得分:0)
@echo off
setlocal enabledelayedexpansion
set "fullstring="
set "string=testago"
> x echo %string%
for %%? in (x) do set /a "strlength=%%~z? - 2"
del x
for /l %%a in (1,1,%strlength%) do (
set /a "b=%%a - 1"
call set "this=%%string:~!b!,1%%"
set "fullstring=!fullstring!!this!"
)
echo "%fullstring%"
pause
在for /l
循环中,不需要删除c
变量。
使用call set
对行进行第二次解析以设置this
变量。
b
需要延迟扩展,然后string
变量需要扩展,因此
在call set
上使用string
并使用双倍的百分比即可达到目的。
变量替换的第二个参数是长度。 每个字符的长度将为常数1。
串联整个字符串将需要延迟扩展
或使用call set
作为替代。