deef99 Posted October 26, 2009 Posted October 26, 2009 I am writing a script that will: 1. Open a text file 2. Search for the occurance of "=400" Got that working. Now I need to know what LINE that is so I can grab the information on the line AFTER that. Can someone give me an idea how I can do that? I tried: $position = StringInStr($read, "400") But this gives me the character position. Appreciate any help! Dee
herewasplato Posted October 26, 2009 Posted October 26, 2009 I am writing a script that will:1. Open a text file2. Search for the occurance of "=400"Got that working. Now I need to know what LINE that is so I can grab the information on the line AFTER that.Can someone give me an idea how I can do that?I tried: $position = StringInStr($read, "400") But this gives me the character position.Appreciate any help!DeeThere are several ways to accomplish this. Please post the code that you have so far. This will help us to know the direction that you were taking and maybe we can continue in that same direction. [size="1"][font="Arial"].[u].[/u][/font][/size]
PsaltyDS Posted October 26, 2009 Posted October 26, 2009 Read it to an array with _FileReadToArray(), get the index for "=400" with _ArraySearch(), then just increment the index +1. Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law
deef99 Posted October 26, 2009 Author Posted October 26, 2009 (edited) Read it to an array with _FileReadToArray(), get the index for "=400" with _ArraySearch(), then just increment the index +1. This is all I have so far... I don't know how to get _FileReadtoArray to work...can u help please?#include "array.au3"#include "File.au3"#include "Date.au3"#include "String.au3"$position = 0$sl = 0$; Change DIR and process files just movedFileChangeDir("\\xxxfiles01\common\CMS_IBAuto\Monitor");look for first occurance of a file$search = FileFindFirstFile("*.txt")MsgBox(0, "1", $search)While 1 ;look for additional files $file = FileFindNextFile($search) MsgBox(0, "2", $file) If @error Then ExitLoop$file1 = FileOpen($file, 0)MsgBox(0, "3", $file1)$read = FileRead($file1)If @error = -1 Then MsgBox(0, "Error", "File not read") ExitElse MsgBox(0, "Read", $read) If StringRegExp($read, "= 400") Then $position = StringInStr($read, "= 400") MsgBox(0, "Oops", $position) Else MsgBox(0, "Oops", "No match") EndIfEndIfFileClose($file)Wend Edited October 26, 2009 by deef99
Xenobiologist Posted October 26, 2009 Posted October 26, 2009 HI, it would be easier if you describe what your goal is. If you need the line after a specific search word then this could be easily done by one regex pattern. Please, describe a little more what you want and we can tell you how to do it. Mega Scripts & functions Organize Includes Let Scite organize the include files Yahtzee The game "Yahtzee" (Kniffel, DiceLion) LoginWrapper Secure scripts by adding a query (authentication) _RunOnlyOnThis UDF Make sure that a script can only be executed on ... (Windows / HD / ...) Internet-Café Server/Client Application Open CD, Start Browser, Lock remote client, etc. MultipleFuncsWithOneHotkey Start different funcs by hitting one hotkey different times
PsaltyDS Posted October 26, 2009 Posted October 26, 2009 (edited) This is all I have so far... I don't know how to get _FileReadtoArray to work...can u help please?You have to declare the variable beforehand and pass it ByRef to _FileReadToArray(). That's the only thing even slightly tricky about it, unless you mean you don't know how to use arrays yet. #include "array.au3" #include "File.au3" #include "Date.au3" #include "String.au3" $position = 0 $sl = 0 $ ; Change DIR and process files just moved FileChangeDir("\\xxxfiles01\common\CMS_IBAuto\Monitor") ;look for first occurance of a file $search = FileFindFirstFile("*.txt") MsgBox(0, "1", $search) While 1 ;look for additional files $file = FileFindNextFile($search) MsgBox(0, "2", $file) If @error Then ExitLoop $file1 = FileOpen($file, 0) MsgBox(0, "3", $file1) $read = FileRead($file1) If @error = -1 Then MsgBox(0, "Error", "File not read") Exit Else MsgBox(0, "Read", $read) If StringRegExp($read, "= 400") Then $position = StringInStr($read, "= 400") MsgBox(0, "Oops", $position) Else MsgBox(0, "Oops", "No match") EndIf EndIf FileClose($file) Wend Try it this way for simplicity's sake: Global $sFile, $sLine Global $sDir = "\\xxxfiles01\common\CMS_IBAuto\Monitor" Global $hSearch = FileFindFirstFile($sDir & "\*.txt") While 1 ;look for additional files $sFile = FileFindNextFile($hSearch) If @error Then ExitLoop Else $sFile = $sDir & "\" & $sFile ConsoleWrite("Debug: $sFile = " & $sFile & @LF) EndIf $sLine = FileReadLine($sFile) If @error Then ConsoleWrite("Debug: Exit on FileReadLine(), @error = " & @error & @LF) Exit Else If StringInStr($sLine, "=400") Then ; Read next line $sLine = FileReadLine($sFile) ConsoleWrite("Debug: $sLine = " & $sLine & @LF) Exit EndIf EndIf WEnd Edit: Xenobiologist is right, FileRead() and StringRegExp() could do the search in two lines, but you didn't sound like you were ready to play with RegExp. Edited October 26, 2009 by PsaltyDS Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law
deef99 Posted October 26, 2009 Author Posted October 26, 2009 GUYS: thanks alot...your insight helped me figure out what I needed!!!!! I have another question, but I will post as new thread...THANKS AGAIN! You have to declare the variable beforehand and pass it ByRef to _FileReadToArray(). That's the only thing even slightly tricky about it, unless you mean you don't know how to use arrays yet. Try it this way for simplicity's sake: Global $sFile, $sLine Global $sDir = "\\xxxfiles01\common\CMS_IBAuto\Monitor" Global $hSearch = FileFindFirstFile($sDir & "\*.txt") While 1 ;look for additional files $sFile = FileFindNextFile($hSearch) If @error Then ExitLoop Else $sFile = $sDir & "\" & $sFile ConsoleWrite("Debug: $sFile = " & $sFile & @LF) EndIf $sLine = FileReadLine($sFile) If @error Then ConsoleWrite("Debug: Exit on FileReadLine(), @error = " & @error & @LF) Exit Else If StringInStr($sLine, "=400") Then ; Read next line $sLine = FileReadLine($sFile) ConsoleWrite("Debug: $sLine = " & $sLine & @LF) Exit EndIf EndIf WEnd Edit: Xenobiologist is right, FileRead() and StringRegExp() could do the search in two lines, but you didn't sound like you were ready to play with RegExp.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now