gpt4 book ai didi

arrays - 如何在 FOR/F 循环中递增 DOS 变量?

转载 作者:行者123 更新时间:2023-12-03 06:17:28 26 4
gpt4 key购买 nike

我正在尝试从文件中读取文本行,并递增计数器,以便最终可以在 DOS 中模拟数组。

我希望能够将文本行存储在 DOS 数组中以供进一步处理。

我当前的尝试是:

set TEXT_T="myfile.txt"

set /a c=1

FOR /F "tokens=1 usebackq" %%i in (%TEXT_T%) do (
set /a c=c+1
echo %%i, %c%
)

但是变量c并没有递增;它保持在 1。

欢迎提出建议。

谢谢,迈克

最佳答案

您的代码片段的问题在于变量的扩展方式。变量扩展通常在第一次读取语句时完成。在您的情况下,将读取整个 FOR 循环及其 block ,并且除循环变量之外的所有变量都将扩展为其当前值。

这意味着 echo %%i, %c% 中的 %c% 立即展开,因此实际上用作 echo %%i, 1 在每个循环迭代中。

所以你需要的是延迟变量扩展。找到一些关于它的好的解释 here .

应延迟扩展的变量通过 !VARIABLE! 引用,而不是 %VARIABLE%。但您需要使用 setlocal ENABLEDELAYEDEXPANSION 激活此功能,并使用匹配的 endlocal 重置它。

您修改后的代码看起来像这样:

set TEXT_T="myfile.txt"

set /a c=1

setlocal ENABLEDELAYEDEXPANSION

FOR /F "tokens=1 usebackq" %%i in (%TEXT_T%) do (
set /a c=c+1

echo %%i, !c!
)

endlocal

关于arrays - 如何在 FOR/F 循环中递增 DOS 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2913231/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com