|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Получение и обработка информации из текстового файла |
|
Получение и обработка информации из текстового файла
|
Ветеран Сообщения: 1576 |
Есть текстовый файл. Каждая строка этого файла состоит из одного ил двух целых чисел, разделлённых табуляцией(или запятой, пробелом и т.д. - неважно). Разделитель известен заранее. То есть, например:
12345,2 67890,4 23456 34535,5 Если второго числа нет, то оно приравнивается к единице. Количество строк заранее не известно. Задача: Из скрипта вызывать внутреннюю подпрограмму, в качестве аргументов для которой выступает пара чисел из строки. Подпрограмма вызывается для каждой строки по очереди. Общее количество строк заранее не известно. Так же было бы неплохо в начале этого текстового файла прописать несколько текстовых строк, которые в скрипте присвоились бы переменным. Например: в текстовом файле файл1.ехе файл2.ехе ;Тут пустая строка 12345,2 67890,4 23456 34535,5 в скрипте следующая обработка Х1=файл1.ехе Х1=файл1.ехе запуск Х1 запуск Х2 обработка массива строк из двух цифр Помогите написать такой скрипт. Заранее спасибо. |
|
------- Отправлено: 20:39, 10-09-2009 |
![]() Старожил Сообщения: 367
|
Профиль | Отправить PM | Цитировать $sPath = 'd:\1.txt';<--- Путь до текстового файла с числами $sSep = '@TAB';<--- Разделитель, раскоментировать/дописать нужный, закоментировать остальные ;$sSep = ' ' ;$sSep = ';' ;$sSep = ',' $sAppPath = 'c:\1.exe';<--- Путь до программы для запуска с ключами $hFile = FileOpen($sPath, 0);<--- Открываем файл для чтения $iIND = 1;<--- Индикатор выхода из цикла While $iIND <> -1;<--- Цикл $sLine = FileReadLine($hFile);<--- Считываем файл строка за строкой $iIND = @error;<--- Проверяем не конец ли файла $aLine = StringSplit($sLine, $sSep);<--- Разделяем строку разделителем If $aLine[0] = 1 Then;<--- Проверка на наличие второго числа (отсутствие) $iParam1 = $aLine[1];<--- Первый параметр $iParam2 = 1;<--- Второй параметр Else;<--- Проверка на наличие второго числа (присутствие) $iParam1 = $aLine[1];<--- Первый параметр $iParam2 = $aLine[2];<--- Второй параметр EndIf RunWait(@ComSpec & ' /c "' & $sAppPath & '" ' & $iParam1 & ' ' & $iParam2);<--- Запуск программы с ключами. WEnd |
------- Отправлено: 20:56, 10-09-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1576
|
Профиль | Отправить PM | Цитировать kaster,
Огромное спасибо. Вместо вставил файл 1.txt содержит 4 строки. 4 сообщения выскочило ожидаемых, а затем выскочило пятое сообщение с заголовком "-1" (то есть iIND=-1) и текстом "1" (то есть, по видимому, либо iParam1=1, либо iParam2=1). То есть функция будет вызываться не 4 раза, а 5, причём пятый раз с ненужными параметрами. Или я в чём-то не прав? Цитата kaster:
Скрипт сначала из первой строки узнаёт имя первого файла (notepad.exe) и присваивает его какой-либо переменной (допустим Х1), затем узнаёт имя второго файла (d:\1.exe) и присваивает его следующей переменной (Х2). Таких имён файлов может быть несколько. Затем обнаруживается пустая строка и скрипт, например, запускает notepad.exe (узнаёт из переменной Х1) и присваивает sAppPath из твоего примера значение Х2 (то есть d:\1.exe). То есть выполняются каки-либо действия. После этого запускается твой скрипт и обрабатываются пары чисел. Надеюсь сейчас объяснил более понятно. Заранее спасибо за помощь |
|
------- Отправлено: 21:49, 10-09-2009 | #3 |
![]() Старожил Сообщения: 367
|
Профиль | Отправить PM | Цитировать Цитата ya158:
у меня, к сожалению, часто такие ошибки проскакивают с +- 1 на цикле ![]() вот правильный код $sPath = 'd:\1.txt';<--- Путь до текстового файла с числами ;$sSep = '@TAB';<--- Разделитель, раскоментировать/дописать нужный, закоментировать остальные ;$sSep = ' ' ;$sSep = ';' $sSep = ',' $sAppPath = 'c:\1.exe';<--- Путь до программы для запуска с ключами $hFile = FileOpen($sPath, 0);<--- Открываем файл для чтения $iIND = 1;<--- Индикатор выхода из цикла While 1;<--- Цикл $sLine = FileReadLine($hFile);<--- Считываем файл строка за строкой $iIND = @error;<--- Проверяем не конец ли файла If $iIND = -1 Then ExitLoop;<--- Если конец, дальще не обратаываем файл $aLine = StringSplit($sLine, $sSep);<--- Разделяем строку разделителем If $aLine[0] = 1 Then;<--- Проверка на наличие второго числа (отсутствие) $iParam1 = $aLine[1];<--- Первый параметр $iParam2 = 1;<--- Второй параметр Else;<--- Проверка на наличие второго числа (присутствие) $iParam1 = $aLine[1];<--- Первый параметр $iParam2 = $aLine[2];<--- Второй параметр EndIf MsgBox ( 0, $iIND, 'iparam1 = ' & $iParam1 & @CRLF & 'iparam = ' & $iParam2) ;RunWait(@ComSpec & ' /c "' & $sAppPath & '" ' & $iParam1 & ' ' & $iParam2);<--- Запуск программы с ключами. WEnd Цитата ya158:
|
||
------- Отправлено: 01:24, 11-09-2009 | #4 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Сбор информации с сайта и ее обработка. | Medic84 | AutoIt | 16 | 18-08-2010 12:08 | |
Получение информации из нестандартных контроллов | r35p3ct | AutoIt | 2 | 21-09-2009 09:54 | |
CMD/BAT - [решено] Как скопировать имя файла из текстового файла в код батника и т.д. | Nun-Nun | Скриптовые языки администрирования Windows | 6 | 13-05-2009 13:28 | |
C/C++ - Открытие текстового файла | .::.DIMA.::. | Программирование и базы данных | 4 | 05-05-2009 12:17 | |
Обработка больших объемов информации | ProcInf | Программирование и базы данных | 2 | 11-06-2007 13:10 |
|