Почему оператор не печатается с переменной цикла for, когда он печатается нормально с другой переменной цикла for? - PullRequest
0 голосов
/ 04 июля 2018

Итак, я возился с кодом и натолкнулся на странную проблему. У меня есть строка в файле с именем «tests», которая называется «1: 23195068336843541324». Я хочу, чтобы цикл for находил 3-й символ и, исходя из этого, находил определенное количество символов, начиная с 7-го символа. В этом случае я хочу найти 7-го и 8-го персонажа. Итак, я придумал этот вложенный цикл:

@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 голосов
/ 04 июля 2018

Я думаю, это то, что вы пытаетесь сделать. Я действительно не понимаю, почему вы делаете то, что делаете, что является залогом успеха, пытаясь помочь кому-то что-то кодировать.

@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!
    )
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...