Windows批处理:延迟扩展后文件中的数据消失

时间:2013-05-06 11:15:52

标签: windows for-loop batch-file cmd

我正在使用Windows命令提示符脚本来读取不同.txt文件中的值。首先它可以工作,但后来数组似乎是空的。

analyze.bat:

@echo off
setlocal EnableDelayedExpansion
set ID=P8
set comptype=Link
set pattern=(700 710 720 730 740 750 760 770 780 790 ) 

set n=0
for %%i in %pattern% do (
set j=0
for /f "tokens=1-5" %%a in (.\results\%%i.txt) do (
  if %%a==%comptype% if %%b==Results (set t=%%d)
  if %%a==%ID% (
  set data[%n%][%j%]=%%b
  echo !data[%n%][%j%]!                      <-- This is working
  set /a j=!j!+1 )
)
set /a n=!n!+1
)

for /l %%o in (0, 1, %n%) do (
for /l %%k in (0, 1, %j%) do (
echo %data[%%o][%%k]%                        <-- This is not working
))

第二个回声只是打印:“ECHO关闭。”,这让我相信该变量在那时是空的。 它可能与“数据”的延迟扩展有关吗? 用!而不是第二个回声的%不会改变任何东西。 在最后两个for循环之前或之后的EndLocal也无济于事。

1 个答案:

答案 0 :(得分:1)

试试这个:

set "data[!n!][!j!]=%%b"
...
...
echo !data[%%o][%%k]!