Batch file 如何从循环内部设置全局变量
这是我正在使用的批处理代码Batch file 如何从循环内部设置全局变量,batch-file,Batch File,这是我正在使用的批处理代码 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=!fu
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
这样做的目的是将一个字符串(string)逐字符读回另一个字符串(fullstring)。我需要知道如何覆盖for循环中的完整字符串
@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
变量
使用调用集
对行进行第二次解析,以设置此
变量。
b
需要延迟扩展,然后string
变量需要扩展,所以
在string
上使用调用集
,使用两倍的百分比即可实现这一点
变量替换的第二个参数是长度。
每个字符的长度将为常量1
连接完整字符串将需要延迟扩展
或者使用
调用集
作为替代。我想,您需要知道对于
,集
和它们是如何工作的。。您的for/L
循环的内容没有多大意义。输入for/?
和set/?
并读取它们的输出。这真的是您的吗?您没有向我们显示您的SETLOCAL
命令吗?请阅读。无论你目前的问题是什么,你的问题的答案可能都帮不了你。您未能准确说明脚本编写时正在执行的操作。如果它是按照你的意图做的,你可能不会问任何关于它的问题。