Поиск чисел внутри файла
Подскажите пожалуйста, как организовать поиск чисел внутри файла, с последующим их умножением или сложением, например?
Вот так вот, можно выбрать определенные строки, это я разобрался.
Код:
set /p MIN1="Ot stoki pervogo: "
set /p MAX1="Do stroki pervogo: "
set /A CNT=1
setlocal enabledelayedexpansion
for /f "tokens=*" %%S in ('type %name%') do (
if !CNT! GEQ %MIN1% (
if !CNT! LEQ %MAX1% echo %%S>>1.txt
)
set /A CNT=!CNT!+1
)
А как достать цифры? Допустим они такие - 1 15 25 150 - а потом их сложить. Заранее благодарю.
|
Hardip, а зачем отбирать строки?.. в этих строках только числа?.. можно так:
Код:
@echo off
setlocal enabledelayedexpansion
set /p NAME="Is kakogo fayla : "
set /p MIN1="Ot srtoki pervogo: "
set /p MAX1="Do stroki pervogo: "
set CNT=0
set SUM=0
for /f "tokens=*" %%S in ('type %NAME%') do (
set /A CNT+=1
if !CNT! GEQ %MIN1% if !CNT! LEQ %MAX1% (
for %%A in (%%S) do set /A SUM+=%%S 2>nul
)
)
set SUM
pause>nul
|
amel27 Да, в файле только цифры. Я приблизительно понимаю, то что вы сделали - - заставляет каждый элемент складываться, при это не показывая ничего на экране. Я прав? Решил почитать справку по команде for For, но ничего по команде /а не нашел(( Надо чтобы он каждое число проверял и если оно делится без остатка на 5, то echo - эти числа. На Delphi понимаю как
Код:
for I:=1 to n do
if I mod 2=0 then showmessage(I)
Приблизительно так.. А как тут?
|
Цитата:
Цитата Hardip
заставляет каждый элемент складываться, при это не показывая ничего на экране »
|
не совсем так - команда сложения итак ничего не выводит на экран, но если вдруг попадется строка, не являющаяся числом будет выведена ошибка и операция не будет выполнена, вот эти сообщения об ошибках и подавляются (2 - ID потока ошибок)
Цитата:
Цитата Hardip
Решил почитать справку по команде for For, но ничего по команде /а не нашел »
|
а причем тут FOR, смотрите в сторону "HELP SET"
Цитата:
Цитата Hardip
чтобы он каждое число проверял и если оно делится без остатка на 5, то echo - эти числа »
|
Код:
@echo off
setlocal enabledelayedexpansion
set /p NAME="Is kakogo fayla : "
set /p MIN1="Ot srtoki pervogo: "
set /p MAX1="Do stroki pervogo: "
set CNT=0
for /f "tokens=*" %%S in ('type %NAME%') do (
set /A CNT+=1
if !CNT! GEQ %MIN1% if !CNT! LEQ %MAX1% (
for %%A in (%%S) do (
set /A MOD=%%A %% 5
if !MOD! equ 0 echo %%A
)
)
)
pause>nul
|
Большое Вам спасибо! Всё именно так как нужно!
Цитата:
Цитата amel27
а причем тут FOR, смотрите в сторону "HELP SET" »
|
Да на счёт SET, Вы были правы! Я сейчас смотрел..
Цитата:
Цитата amel27
чтобы он каждое число проверял и если оно делится без остатка на 5, то echo - эти числа » »
|
Есть такой вопрос - хочу не просто получить результат, а ещё и научиться. Если есть какие-то примеры, которые можно было бы сделать и понять, ну например
откуда %% это? Я был бы очень благодарен!
|
оператор % вычисляет остаток от деления, но поскольку символ "%" используется в CMD также для подстановки переменных (%VAR%), второй % выполняет функцию экрана
|
Время: 19:24.
© OSzone.net 2001-