Показать полную графическую версию : [решено] Поиск чисел внутри файла
Подскажите пожалуйста, как организовать поиск чисел внутри файла, с последующим их умножением или сложением, например?
Вот так вот, можно выбрать определенные строки, это я разобрался.
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 Да, в файле только цифры. Я приблизительно понимаю, то что вы сделали - 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) Приблизительно так.. А как тут?
заставляет каждый элемент складываться, при это не показывая ничего на экране »не совсем так - команда сложения итак ничего не выводит на экран, но если вдруг попадется строка, не являющаяся числом будет выведена ошибка и операция не будет выполнена, вот эти сообщения об ошибках и подавляются (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
Большое Вам спасибо! Всё именно так как нужно!
а причем тут FOR, смотрите в сторону "HELP SET" »
Да на счёт SET, Вы были правы! Я сейчас смотрел..
чтобы он каждое число проверял и если оно делится без остатка на 5, то echo - эти числа » »
Есть такой вопрос - хочу не просто получить результат, а ещё и научиться. Если есть какие-то примеры, которые можно было бы сделать и понять, ну например
set /A MOD=%%A %% 5 откуда %% это? Я был бы очень благодарен!
откуда %% это? »оператор % вычисляет остаток от деления, но поскольку символ "%" используется в CMD также для подстановки переменных (%VAR%), второй % выполняет функцию экрана
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC