2013-05-06 38 views
1

我正在使用Windows命令提示符脚本从不同的.txt文件中读取值。首先它是有效的,但后来该阵列似乎是空的。Windows批处理:延迟扩展后文件中的数据消失

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-loops之前或之后的EndLocal也无济于事。

回答

1

试试这个:

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

它没有帮助,还打印 “ECHO处于关闭状态。” – fortranondebian 2013-05-06 11:26:24

+0

做了一个编辑... – Endoro 2013-05-06 11:27:06

+0

它的工作原理,谢谢! 我也不得不减少n和j 1,但这是一个不同的故事。 – fortranondebian 2013-05-06 11:34:58

相关问题