在以下代码中打印数组元素值时出现问题:
@echo off
setlocal enabledelayedexpansion enableextensions
for /F "tokens=2,3 delims= " %%a in ('findstr "associationMaxRtx maxIncomingStream maxOutgoingStream initialAdRecWin maxUserdataSize mBuffer nThreshold PathMaxRtx maxInitialRtrAtt minimumRto maximumRto initialRto rtoAlphaIndex tSack" C:\Users\ephajin\logs.txt') do (
set /A count+=1
set vartmp1=%%a
set vartmp2=%%b
set "array[!count!]="%%a %%b""
)
(for /L %%i in (1,1,%count%) do echo !array[%%i]!
) > result.txt
在结果文件中我得到了输出
ECHO is off.
ECHO is off.
ECHO is off.
ECHO is off.
它不会打印数组值。
问题可能是由于setlocal enabledelayedexpansion
,但你如何纠正呢?
答案 0 :(得分:1)
FOR /L %%a IN (1,1,4) DO ECHO !array[%%a]!
FOR /f "tokens=1*delims==" %%a IN ('set array[') DO ECHO %%b
这两行中的任何一行都应该显示您的要求。
由于第一个代码与您的代码相同,我怀疑array[*]
数组未正确建立。你可以通过执行
set array[
准确显示已设定的内容。实际上,
set
应该显示所有已定义的用户变量。
set|more
会显示相同的内容,但允许您翻阅它们。
SET "result="
FOR /f "tokens=1*delims==" %%a IN ('set array[') DO SET "result=!result! %%b"
ECHO result: "%result%" or "%result:~1%"
echo===============
SET "result="
FOR /L %%a IN (1,1,4) DO SET "result=!result! !array[%%a]!"
ECHO result: "%result%" or "%result:~1%"
设置result
的两种方法 - 数组中的值列表。当然,set
指令中的空间几乎可以是你想要的任何字符 - 例如逗号。结果显示前导空格并删除该空格。