scriptnewbie Posted October 3, 2007 Share Posted October 3, 2007 I am new to autoit. I have a text file that has 2 columns (see sample below). Column 1 contains old ip addresses. Column 2 contains the new ip address to replace the old address. For example if ip address = 10.100.100.47, replace with 10.100.205.67. Would like to put in an array and be able to reference the old ip address and the new ip address. Basically saying if ipaddress = 10.100.100.47 replace with 10.100.205.67. Would someone please help me with the code for this. Thanks. SAMPLE TEXT FILE : old ip address new ip address 10.100.100.47 10.100.205.67 10.100.100.50 10.100.205.5 10.100.100.30 10.100.205.9 10.100.100.25 10.100.205.1 10.100.100.35 10.100.205.10 10.100.100.40 10.100.205.20 10.100.100.45 10.100.205.21 10.100.100.55 10.100.205.91 10.100.100.60 10.100.205.75 Link to comment Share on other sites More sharing options...
PsaltyDS Posted October 3, 2007 Share Posted October 3, 2007 Look at the example scripts for _FileReadToArray and StringSplit. Use a For/Next loop to go through the array, and StringSplit to get the parts of each line. If you get stuck, post your code for more help. 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 Link to comment Share on other sites More sharing options...
scriptnewbie Posted October 3, 2007 Author Share Posted October 3, 2007 I added a comma in the text file as a separator. I am not that familiar with arrays. My code follows: How do I get the columns to variables. Thanks. ============================================ #include <file.au3> ; open file for reading $readfile = "c:\ipaddr.txt" ;Read in lines of text into array until the EOF is reached Dim $text If Not _FileReadToArray("c:\ipaddr.txt", $text) Then MsgBox(4096, "Error", " Error reading text file to Array error:" & @error) Exit EndIf For $x = 1 To $text[0] $array = StringSplit($text[$x], ",") Next ; Close file FileClose($readfile) Link to comment Share on other sites More sharing options...
enaiman Posted October 4, 2007 Share Posted October 4, 2007 #include <file.au3> ; open file for reading $readfile = "c:\ipaddr.txt" ;Read in lines of text into array until the EOF is reached Dim $text If Not _FileReadToArray("c:\ipaddr.txt", $text) Then MsgBox(4096, "Error", " Error reading text file to Array error:" & @error) Exit EndIf ;define 2 arrays - one for old IP's and the other for new IP's Dim $old_ip[UBound($text)] Dim $new_ip[UBound($text)] ;put the number of elements in the element 0 of each array $old_ip[0] = $text[0] $new_ip[0] = $text[0] For $x = 1 To $text[0] $array = StringSplit($text[$x], ",") $old_ip[$x] = $array[1] $new_ip[$x] = $array[2] Next ; Close file FileClose($readfile) dickjones007 1 SNMP_UDF ... for SNMPv1 and v2c so far, GetBulk and a new example script wannabe "Unbeatable" Tic-Tac-Toe Paper-Scissor-Rock ... try to beat it anyway :) Link to comment Share on other sites More sharing options...
PsaltyDS Posted October 4, 2007 Share Posted October 4, 2007 You don't have to FileOpen/FileClose for _FileReadToArray(). It will do that for itself. And you were almost there. The $test array already has all the lines in it and $test[0] is the count. You create the 2D array (a 1D array is just a list, a 2D array is just a table with rows and columns) using $test[0] to tell you how big to make it. The loop reads each line from $test, splits into $array, and then copies the parts to the new array: #include <file.au3> #include <array.au3> ; only for _ArrayDisplay() $sFile = "c:\Temp\ipaddr.txt" ;Read in lines of text into 1D array Dim $text If Not _FileReadToArray($sFile, $text) Then MsgBox(4096, "Error", " Error reading text file to Array error:" & @error) Exit EndIf _ArrayDisplay($text, "Debug: $text") ; Split lines into 2D array Dim $avIPs[$text[0] + 1][2] = [["old ip address", "new ip address"]] For $x = 1 To $text[0] $array = StringSplit($text[$x], ",") If $array[0] = 2 Then $avIPs[$x][0] = $array[1] $avIPs[$x][1] = $array[2] EndIf Next _ArrayDisplay($avIPs, "Debug: $avIPs") GoogleGonnaSaveUs 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 Link to comment Share on other sites More sharing options...
scriptnewbie Posted October 4, 2007 Author Share Posted October 4, 2007 Thanks to all. Thanks for the tutorial on arrays. Link to comment Share on other sites More sharing options...
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