2013-05-06 37 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

相關問題