2014-08-10 3 views
-2

Я пытаюсь сделать командный файл, который добавляет числа. Номер по умолчанию будет равен 100. При запуске сценарий добавляет 1 к 100. Затем он добавит 1 к ранее созданному номеру (101). Это продолжалось бы до остановки. Кроме того, я не знаю, как это сделать. Я не мог найти других подобных ответов. Могу ли я помочь? :)Добавление чисел в пакетном файле

+0

"До остановки"? – MxyL

+0

Если вы можете дать более подробную информацию о более широкой проблеме, мы можем попытаться предложить лучшее решение (делая то, что вы сказали, имеет несколько подходов, но не все они подходят для определенных сценариев). – roelofs

ответ

1

Вы можете использовать "установить/а" делать математику в пакетных файлах , например:

set /a sum = %sum% + 1 

или даже

set /a sum += 1 

(то же самое) Есть другие операторы, кроме + конечно, и некоторые из них нужно будет процитировать.

Я нашел список в http://www.robvanderwoude.com/battech_math.php с примерами:

Add: 
    SET /A Result = 12 + 4 
Subtract: 
    SET /A Result = 23 - 7 
Multiply: 
    SET /A Result = 8 * 2 
Integer divide: 
    SET /A Result = 33/2 
Modulo divide: (1, 2) 
    SET /A "Result = 66 %% 25" 
Shift right: (2) 
    SET /A "Result = 128 >> 3" 
Shift left: 
    SET /A "Result = 1 << 4" 
Bitwise AND: 
    SET /A "Result = 48 & 23" 
Bitwise OR: 
    SET /A "Result = 16 | 16" 
Bitwise XOR: 
    SET /A "Result = 31^15" 
Group: 
    SET /A "Result = (24 << 1) & 23" 

Эта страница перечисляет некоторые более продвинутые вещи тоже, а также ограничения: Это целое только и 32-бит максимум.


Чтобы сделать это сделать это в цикле, так как вы хотите, чтобы вручную остановить его, я бы просто использовать простой бесконечный цикл Гото.

Перед набором команд, который добавляет один, поставить метку, которая начинается с двоеточия, как этот

:start 

затем команды, которые вы хотите запустить внутри цикла (добавление 1, возможно, «эхо» ИНГ результат и т.д.) и в нижней части Гото команду, чтобы вернуться к метке:

goto start 

чтобы остановить ее, нажмите Ctrl + Pause и ответить Y. (Это должно быть управление-брейк, но некоторые клавиатуры переместите Break на другой ключ из Pause, а новый не остановит пакетные файлы)

Он также может остановиться сам по себе после того, как счет достигнет 4294967295 (32-разрядный максимум), который может не занять много времени, если он только добавляет числа. (У меня нет компьютера под управлением Windows, рядом со мной в данный момент, чтобы проверить это)

+0

OP также, кажется, не уверен в вещах, подобных рекурсивному вызову функции, или выполнению его в любом типе цикла. – roelofs

+0

Это по крайней мере начало, но вы правы - я должен был включить более оригинальный вопрос. – davidgro

+0

Я обновил его, чтобы добавить цикл, пока не остановится, и как его остановить. – davidgro

1

простой способ это в for /l цикле:

set /p max=Count to: 
for /l %%a in (100, 1, %max%) do (
Echo %%a 
) 

Это простая программа подсчитывать от 100, но демонстрирует легкость и эффективность использования петель в партии.

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