为什么当一个语句与另一个for循环变量一起正常打印时,为什么不打印带有for循环的变量?

时间:2018-07-03 21:29:11

标签: batch-file

所以,我在弄乱一些代码,遇到了一个奇怪的问题。我在名为“ tests”的文件中有一个字符串,其名称为“ 1:23195068336843541324”,我想要一个for循环来查找第3个字符,然后从该循环中找到从第7个字符开始的一定数量的字符。在这种情况下,我想找到第7个和第8个字符。所以我想出了这个嵌套的for循环:

@ECHO off
SETLOCAL EnableDelayedExpansion
FOR /L %%i IN (1,1,5) DO (
    FOR /F %%j IN ('FINDSTR /C:"%%i:" tests.txt') DO (
        SET PH=%%j
        SET mon=!PH:~2,1!
        ECHO !mon!
        SET test%%i=!PH:~6,%mon%!
        ECHO !test1!))

ECHO语句仅用于调试,因此我可以看到设置为什么。

但是每次都输出ECHO is OFF,因为从未设置test1。我使用以下循环重新创建了它:

SETLOCAL EnableDelayedExpansion
SET test=123
SET number=2
FOR /L %%i IN (1,1,5) DO (
SET t%%i=!test:~1,%number%!
ECHO !t1!)

,效果很好。如果我在第一个循环中为mon输入一个数字,它也可以正常工作。我在这里做错了什么?谢谢!

1 个答案:

答案 0 :(得分:3)

我认为这是您要尝试做的。我真的不明白您为什么要做自己的工作,而这是尝试帮助某人编写代码时成功的一半。

@ECHO off
SETLOCAL EnableDelayedExpansion
FOR /L %%j IN (1,1,5) DO (
    FOR /F %%i IN ('FINDSTR /C:"%%j:" tests.txt') DO (
        SET PH=%%i
        SET mon=!PH:~2,1!
        ECHO mon=!mon!
        FOR /F "delims=" %%G IN ("!mon!") do SET test%%j=!PH:~6,%%G!
        ECHO test%%j=!test%%j!
    )
)