Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/35: Рейтинг темы: голосов - 35, средняя оценка - 4.54
35 / 27 / 0
Регистрация: 11.10.2011
Сообщений: 380
1

Учимся читать из файла то что нужно

24.12.2011, 17:25. Показов 7139. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В прикрепленной картинке есть скрин файлика истории который делает сервер.

у меня работает скрипт которые обрабатывает файлы в определенной директории и ему для работы необходима информация как раз таки из этого файла

1. Найти данное имя в любой строке
2. И напротив данного имени файла считать циферку в переменную

После чего я уже смогу дальше доработать скрипт обработки.
Миниатюры
Учимся читать из файла то что нужно  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.12.2011, 17:25
Ответы с готовыми решениями:

учимся читать тех. литературу на английском языке
здравствуйте, собственно возникло желание и потребность научиться читать и понимать тех. литературу...

Что нужно читать и что нужно изучать?
Немного знаком с\С++, там всё логично и простой синтаксис, тут же какие-то чужеродные кракозябры,...

Как нужно читать книги по программированию?
Как нужно читать книги по программированию, чтобы выжать из них максимум??? Я допустим читаю ...

Какую литературу нужно читать начинающему электронщику?
Хочу научится понимать принцип работы элек. приборов и ремонтировать их в дальнейшем. Мне нужны...

12
795 / 177 / 9
Регистрация: 11.01.2011
Сообщений: 543
24.12.2011, 18:22 2
Не знаю, что за .REC, покажи как это выглядит в Блокноте в .TXT
0
35 / 27 / 0
Регистрация: 11.10.2011
Сообщений: 380
24.12.2011, 18:25  [ТС] 3
Вот так выглядит в блокноте
Вложения
Тип файла: txt 019_12_11.txt (727 байт, 270 просмотров)
1
795 / 177 / 9
Регистрация: 11.01.2011
Сообщений: 543
24.12.2011, 19:57 4
Именно "60_352VR.004" искать во всех строках? и если встретится, то считывать циферки(адрес откуда) в переменную, но если окажется разные циферки, которые брать? или записывать все циферки?

Добавлено через 2 минуты
Если такие циферки, встретятся только 1 раз, то:
Bash
1
2
3
4
@echo off
for /f "tokens=3,5 skip=5 delims=і" %%i in ('type "019_12_11.txt"') do (if "%%i"=="60_352VR.004" set x=%%j)
echo %x%
pause
Вместо "019_12_11.txt" попробуйте поставить оригинальный .REC файл. Отпишитесь, как проверите.
1
35 / 27 / 0
Регистрация: 11.10.2011
Сообщений: 380
24.12.2011, 21:43  [ТС] 5
получается мы ищем значение имени файла которое будет помещено в переменную данную маску я ввел для примера

Добавлено через 9 минут
Все супер, находит то, что нужно. Все в этой строке понял кроме
как работает эта строка "tokens=3,5 skip=5 delims=і"

смотрел справку чето не пойму

Добавлено через 11 минут
Хм вот только не работает если длину файла меняю. Мне нужно что б независимо какая длина он считывал то что нужно.
0
795 / 177 / 9
Регистрация: 11.01.2011
Сообщений: 543
24.12.2011, 21:56 6
Не понял вас.
Если меняется длина файла в каком смысле?
Если увеличивается или уменьшается число строк, то уберите из кода skip=5, типо так:
Bash
1
2
3
4
@echo off
for /f "tokens=3,5 delims=і" %%i in ('type "019_12_11.txt"') do (if "%%i"=="60_352VR.004" set x=%%j)
echo %x%
paus
0
35 / 27 / 0
Регистрация: 11.10.2011
Сообщений: 380
24.12.2011, 22:57  [ТС] 7
Сначало задали вот такой файл "60_352VR.004" что если необходимо задать вот такой файл "60_353.OCH" по длине маски

Добавлено через 2 минуты
аа все разобрался нужно просто пробелы ставить

Добавлено через 1 минуту
Вот не могу понять как работает вот эта строка "tokens=3,5 skip=5 delims=і" что означает каждый параметр читал справку по команде for так и не понял

И откуда взяли "J" set x=%%j

Добавлено через 56 минут
Откуда взяли J

PureBasic
1
set x=%%j
0
795 / 177 / 9
Регистрация: 11.01.2011
Сообщений: 543
24.12.2011, 23:11 8
Ну если не понял, я скорее всего не помогу вам. Там все понятно написано.
skip - число пропускаемых строк в начале файла.
delims - разделители (для замены заданных по умолчанию пробела и знака табуляции.), то есть чем делятся строки на подстроки.
tokens - номера подстрок, которые берем.
%%i - переменная куда записываются данные с выбранной подстроки, если выбрано * - значит записываются все подстроки, то есть всю строку. Если 1 - то первая подстрока, если 1,2 - то %%i - это первая подстрока, а 2 - это следующая по англ. алфавиту переменная, то есть %%j. Если назначаем переменную %%i мы можешь использовать меньше переменных, чем если укажем %%a,%%b,%%c,%%d, и т.д..

Добавлено через 2 минуты
аа все разобрался нужно просто пробелы ставить
а вот тут я не понял, вы про какие пробелы
0
35 / 27 / 0
Регистрация: 11.10.2011
Сообщений: 380
24.12.2011, 23:12  [ТС] 9
" 60_353.OCH"
0
795 / 177 / 9
Регистрация: 11.01.2011
Сообщений: 543
25.12.2011, 00:31 10
Не знаю зачем вам проблем, у меня все норм без пробела работает, а с пробелом не работает
0
35 / 27 / 0
Регистрация: 11.10.2011
Сообщений: 380
25.12.2011, 11:38  [ТС] 11
Вот еще столкнулся с такой проблемой Ваша строка работает отлично, но вот необходима доработка.

Как работает алгоритм:
1) на сервер поступил файл допустим вот такого числа 19_12_11
2) Сервер зарегистрировал файл в протоколе обработки 19_12_11.REC (он формируется каждый день)
3) сервер выкладывает файл в директорию XXX
4) после того как сервер выложил файл в директорию XXX данный файл начинает обрабатывать батник (производит определенные действия)
5) батнику необходима информация о этом файле. Он по умолчанию начинает считывать из файла 19_12_11.REC тобишь за сегодняшнее число.
6) ну и после этого решается учесть файла.

Проблема:
1) допустим сегодня 19_12_11 и сегодня запустился батник
2) сервер принял файлы 15_11_11 и соответственно записал протокол обработки 15_11_11.REC
3) батник ничего не найдет в протоколе за сегодняшнее число ему нужно перебрать все протоколы и найти информацию когда был обработан файл сервером.

2 пути решения

1й путь решения:
Как это сделать ? что б батник считывал файлы путем перебора назад файлов протокола приема???? + еще менял месяцы + еще в зависимости от года (високосный или не високосный)

2й путь решения:
Или может просто считывать дату из файла ??? когда создан файл ? и в зависимости от этого производить обработку ? Но почему то я попробовал скопировать файл из одного места в другое дата создания не поменялась не сегодняшнюю.

Как решить данную задачу ?
0
795 / 177 / 9
Регистрация: 11.01.2011
Сообщений: 543
25.12.2011, 12:43 12
Надо брать последний файл? (.REC). Или в папке всегда один файл .REC? Если второе - то делается как дважды два. Если первое посложнее.
0
35 / 27 / 0
Регистрация: 11.10.2011
Сообщений: 380
25.12.2011, 12:46  [ТС] 13
нужно брать последний файл если в этом файле не оказывается того чего нужно искать за предыдущее число

Добавлено через 21 секунду
в папке много протоколов приема за каждый день
0
25.12.2011, 12:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.12.2011, 12:46
Помогаю со студенческими работами здесь

Нужно читать по байтам и писать в другой файл.
Dim Sim As String, NameFile1 As String NameFile1 = '__' & NameFile Open NameFile For Input As #1...

нужно что б программа читала не с клавиатуры а из файла
ребят нужно переделать программу что б она читала данные не с клавиатуры а из файла аот программа...

Кодировка после сохранения файла не та что нужно
Написал небольшую программку на java для конвертации файлов из файлов txt в html в коде при...

Что читать
Приветствую всех! Изучил я давно основы PHP. Переменные, условия, циклы, массивы, некоторые...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru