Как установить глобальную переменную из цикла - PullRequest
0 голосов
/ 01 сентября 2018

Итак, вот код партии, который я использую.

set fullstring=
set string=testago
echo %string%>x&FOR %%? IN (x) DO SET /A strlength=%%~z? - 2&del x

for /L %%a in (1,1,%strlength%) do (
    set b=%%a - 1
    set c=%%a
    set this=%string:~%%b,%%c%
    set fullstring=!fullstring!%this%
)

echo %fullstring%
pause

То, что это делает, это читает строку (строку) символ за символом к ​​другой (полная строка). Мне нужно знать, как перезаписать полную строку из цикла for.

1 Ответ

0 голосов
/ 02 сентября 2018
@echo off
setlocal enabledelayedexpansion

set "fullstring="
set "string=testago"

> x echo %string%

for %%? in (x) do set /a "strlength=%%~z? - 2"

del x

for /l %%a in (1,1,%strlength%) do (
    set /a "b=%%a - 1"
    call set "this=%%string:~!b!,1%%"
    set "fullstring=!fullstring!!this!"
)

echo "%fullstring%"
pause

В цикле for /l нет необходимости в переменной c, поэтому она удалена.

Использование call set для второго анализа строки для установки переменной this. b требует отложенного расширения, тогда string переменная требует расширения, так использование call set на string с использованием удвоенных процентов достигает этого.

2-ым аргументом подстановки переменных является длина. Символ за символом будет константой 1 для длины.

Конкатенация полной строки потребует отложенного расширения или используйте call set в качестве альтернативы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...