2013-04-03 3 views
1

Я новичок в партии. Пытаясь на несколько дней сделать что-то в партии, но у меня проблема, я не могу решить. Я прочитал много ваших комментариев, но не нашел ответа. Возможно ты можешь помочь мне?пакетное программирование

Дело в том,:

  1. я строка ввода с клавиатуры (например, 10 символов). имя этого «allinputstring»
  2. Вычисление длины в порядке (путем перенаправления в txt-файле и расширения его байтов). name "length"
  3. Строка parse в 10 частях (строки) в порядке.

Итак, вот проблема, я хочу повторить эти фрагменты, поэтому я использую следующий код, я использую счетчик, чтобы узнать, что счетчик дает мне хорошее количество в качестве выходной переменной и эхо его видеть на экране если это хорошо. Счетчик кажется хорошим, конец эха строк штук достаточно хорош. Но я хочу поставить строку 5. Переменная count вместо "%%m" и не может найти синтаксический способ, как это сделать.

setlocal enabledelayedexpansion 
for /l %%m in (1,1,!lenght!) do (
    set /a count=0 
    set /a count=count+%%m 
    echo !count!!allinputstring:~%%m,1! 
) 
endlocal 

, пожалуйста, помогите мне.

+0

клыков является неправильно пишется –

+0

Я сделал редактирование и положил% count% in :) – Endoro

+0

извините, я хорват – Zvonimir

ответ

3
@ECHO off 
setlocal ENABLEDELAYEDEXPANSION 
SET allinputstring=abcdefghijk 
SET lenght=10 
for /l %%m in (1,1,!lenght!) do (
    set /a count=0 
    set /a count=count+%%m 
    FOR %%z IN (!count!) DO echo !count! !allinputstring:~%%z,1! 
) 
GOTO :eof 

делают ли это то, что вам нужно?


Итак ... сделать COUNT шоу (я назначил его KOWNT, но синтаксис endlocal&set count=%count% бы назначить его COUNT вместо)

Я изменил начальную стоимость FOR/L, потому что характер подсчет начинается с символа # 0 в строке.

@ECHO off 
setlocal ENABLEDELAYEDEXPANSION 
SET allinputstring=abcdefghij 
SET lenght=9 
for /l %%m in (0,1,!lenght!) do (
    set /a count=0 
    set /a count=count+%%m 
    FOR %%z IN (!count!) DO echo !count! !allinputstring:~%%z,1! 
) 
endlocal&SET KOWNT=%count% 
ECHO Now KOWNT=%KOWNT% but count=%count% because we have exited the SETLOCAL 
GOTO :eof 

Когда ENDLOCAL встречается, парсер заменяет текущее значение переменных в строке и ТОГДА выполняет линию.

Следовательно, линия выполнена в виде

endlocal&set KOWNT=9 

так как значение count на время 9.

Когда SETLOCAL выполняется, все изменения в окружающей среде, так как соответствие SETLOCAL выбрасываются далеко. Переменные окружения восстанавливаются в состояние, когда SETLOCAL был выполнен и count снова становится пустым (как это было до процедуры.) ТОГДАSET команда выполняется, которая устанавливает KOWNT до 9.

+0

Я пытался найти способ, как это сделать, но после завершения счет переменной должен оставаться с последним значением в ней. endoro отлично справляется с вызовом команды, но я не понимаю логику вызова в этой строке. и еще одна вещь: подсчет является, например, 1-10, но последний символ не отображается. я знаю почему, но не найду способ, как заставить его показать ??? – Zvonimir

4

Попробуйте это:

@echo off &setlocal enabledelayedexpansion 
set /a lenght=9 
set "allinputstring=ABCDEFGHIJ" 
for /l %%m in (0,1,%lenght%) do (
    set /a count=0 
    set /a count+=%%m 
    echo !count! !allinputstring:~%%m,1! 
) 
endlocal 

Выход:

0 A 
1 B 
2 C 
3 D 
4 E 
5 F 
6 G 
7 H 
8 I 
9 J 
+0

это нормально, но на этом пути у меня нет переменной для работы позже, потому что %% m dissapear after for завершен, если iam правильно? – Zvonimir

+0

%% m исчезают после круглых скобок '' '' Вместо этого вы можете работать с% count%. – Endoro

+0

вы сделали то же самое, что и я, но это было не то, что я пытаюсь спросить :) – Zvonimir

Смежные вопросы