Динамическая подстрока в командном файле - PullRequest
0 голосов
/ 25 ноября 2018

Код Выдержка из моего командного файла:

set stringOne=ABCDEF    
echo %stringOne:~2,3%  

Этот вывод CDE

Как я могу динамически echo выводить для моего начального индекса и желаемой длины вывода?

set stringOne=ABCDEF  
set start=2  
set len=3

1 Ответ

0 голосов
/ 25 ноября 2018

вам нужно два слоя переменного расширения.Это можно сделать с помощью отложенное расширение или call:

@echo off
setlocal enabledelayedexpansion
set "string=ABCDEFGH"
set "start=2"
set "len=3"

echo A with delayed expansion: !string:~%start%,%len%!
call echo A with using 'call': %%string:~%start%,%len%%%

FOR /F %%G IN ('dir /b "%~f0"') DO ( 
  set /A "newStart=!Start!+2" 
  call echo B with 'call' and delayed : %%string:~!newStart!,!len!%%
  call call echo B with double-'call': %%%%string:~%%newStart%%,%len%%%%% 
)

FOR /F %%G IN ('dir /b "%~f0"') DO call :output
goto :eof
:output
  set /A "newStart=Start+2" 
  echo C with subroutine and delayed expansion: !string:~%newStart%,%len%! 
  call echo C with subroutine andusing 'call': %%string:~%newStart%,%len%%% 
goto :eof

EDITED в соответствии с вашим комментарием.Вам нужен третий уровень расширения.Я расширил код несколькими различными методами.
(кстати: пожалуйста, не оставляйте код в комментариях, его почти невозможно прочитать. А если ваш вопрос изменится, лучше задайте следующий вопрос в следующий раз)

...