PDA

Показать полную графическую версию : [решено] Поиск чисел внутри файла


Hardip
18-11-2010, 20:40
Подскажите пожалуйста, как организовать поиск чисел внутри файла, с последующим их умножением или сложением, например?

Вот так вот, можно выбрать определенные строки, это я разобрался.

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 - а потом их сложить. Заранее благодарю.

amel27
19-11-2010, 03:37
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

Hardip
19-11-2010, 09:35
amel27 Да, в файле только цифры. Я приблизительно понимаю, то что вы сделали - SUM+=%%S - заставляет каждый элемент складываться, при это не показывая ничего на экране.2>nul Я прав? Решил почитать справку по команде for For (http://microsin.ru/content/view/443/1/), но ничего по команде /а не нашел(( Надо чтобы он каждое число проверял и если оно делится без остатка на 5, то echo - эти числа. На Delphi понимаю какfor I:=1 to n do
if I mod 2=0 then showmessage(I) Приблизительно так.. А как тут?

amel27
19-11-2010, 12:08
заставляет каждый элемент складываться, при это не показывая ничего на экране »не совсем так - команда сложения итак ничего не выводит на экран, но если вдруг попадется строка, не являющаяся числом будет выведена ошибка и операция не будет выполнена, вот эти сообщения об ошибках и подавляются (2 - ID потока ошибок)

Решил почитать справку по команде for For, но ничего по команде /а не нашел »а причем тут FOR, смотрите в сторону "HELP SET"

чтобы он каждое число проверял и если оно делится без остатка на 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

Hardip
19-11-2010, 14:22
Большое Вам спасибо! Всё именно так как нужно!
а причем тут FOR, смотрите в сторону "HELP SET" »
Да на счёт SET, Вы были правы! Я сейчас смотрел..
чтобы он каждое число проверял и если оно делится без остатка на 5, то echo - эти числа » »
Есть такой вопрос - хочу не просто получить результат, а ещё и научиться. Если есть какие-то примеры, которые можно было бы сделать и понять, ну например
set /A MOD=%%A %% 5 откуда %% это? Я был бы очень благодарен!

amel27
19-11-2010, 15:20
откуда %% это? »оператор % вычисляет остаток от деления, но поскольку символ "%" используется в CMD также для подстановки переменных (%VAR%), второй % выполняет функцию экрана




© OSzone.net 2001-2012