Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 如何从循环内部设置全局变量_Batch File - Fatal编程技术网

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
命令吗?请阅读。无论你目前的问题是什么,你的问题的答案可能都帮不了你。您未能准确说明脚本编写时正在执行的操作。如果它是按照你的意图做的,你可能不会问任何关于它的问题。