Windows批处理:延迟扩展后文件中的数据消失
问题描述:
我正在使用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也无济于事。
答
试试这个:
set "data[!n!][!j!]=%%b"
...
...
echo !data[%%o][%%k]!
它没有帮助,还打印 “ECHO处于关闭状态。” – fortranondebian 2013-05-06 11:26:24
做了一个编辑... – Endoro 2013-05-06 11:27:06
它的工作原理,谢谢! 我也不得不减少n和j 1,但这是一个不同的故事。 – fortranondebian 2013-05-06 11:34:58