Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Поиск чисел внутри файла (http://forum.oszone.net/showthread.php?t=191594)

Hardip 18-11-2010 20:40 1545879

Поиск чисел внутри файла
 
Подскажите пожалуйста, как организовать поиск чисел внутри файла, с последующим их умножением или сложением, например?

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

Код:

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 1546106

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 1546191

amel27 Да, в файле только цифры. Я приблизительно понимаю, то что вы сделали -
Код:

SUM+=%%S
- заставляет каждый элемент складываться, при это не показывая ничего на экране.
Код:

2>nul
Я прав? Решил почитать справку по команде for For, но ничего по команде /а не нашел(( Надо чтобы он каждое число проверял и если оно делится без остатка на 5, то echo - эти числа. На Delphi понимаю как
Код:

for I:=1 to n do
if I mod 2=0 then showmessage(I)

Приблизительно так.. А как тут?

amel27 19-11-2010 12:08 1546307

Цитата:

Цитата 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


Hardip 19-11-2010 14:22 1546408

Большое Вам спасибо! Всё именно так как нужно!
Цитата:

Цитата amel27
а причем тут FOR, смотрите в сторону "HELP SET" »

Да на счёт SET, Вы были правы! Я сейчас смотрел..
Цитата:

Цитата amel27
чтобы он каждое число проверял и если оно делится без остатка на 5, то echo - эти числа » »

Есть такой вопрос - хочу не просто получить результат, а ещё и научиться. Если есть какие-то примеры, которые можно было бы сделать и понять, ну например
Код:

set /A MOD=%%A %% 5
откуда %% это? Я был бы очень благодарен!

amel27 19-11-2010 15:20 1546472

Цитата:

Цитата Hardip
откуда %% это? »

оператор % вычисляет остаток от деления, но поскольку символ "%" используется в CMD также для подстановки переменных (%VAR%), второй % выполняет функцию экрана


Время: 19:24.

Время: 19:24.
© OSzone.net 2001-