2016-03-28 37 views
2

Ich bin auf der Suche nach einem Textdokument oder einzelnen Feld CSV-Dokument in ein Array ziehen dann durch das Array.VBScript für jedes Array

Ich habe hier ein paar Beispiele durchgelesen, schaffe es aber immer noch nicht, dass das Skript funktioniert.

Jeder Einblick wäre willkommen und tut mir leid, wenn ich einen früheren nützlichen Beitrag verpasst habe.

#$language = "VBScript" 
#$interface = "1.0" 

crt.Screen.Synchronous = True 

Sub Main 
Set fso = CreateObject("Scripting.FileSystemObject") 

Set hosts = fso.OpenTextFile("C:\Users\XXXX\Documents\2016\3 SmartServices\SNMPHosts.txt") 



Do Until hosts.AtEndOfStream 
    strNextLine = hosts.Readline 
    arrServiceList = Split(strNextLine , ",") 
Loop 

hosts.Close 

For Each item In hosts 
    crt.Screen.Send "telnet " & item & chr(13) 
    crt.Screen.WaitForString "username: " 
    crt.Screen.Send "UUUU" & chr(13) 
    crt.Screen.WaitForString "password: " 
    crt.Screen.Send "PPPP" & chr(13) 
    crt.Screen.WaitForString ">" 
    crt.Screen.Send "en" & chr(13) 
    crt.Screen.Send "PPPP" & chr(13) 
    crt.Screen.WaitForString "#" 
    crt.Screen.Send "conf t" & chr(13) 
    crt.Screen.WaitForString "(config)#" 
    crt.Screen.Send "COMMAND STATIC TEXT" & chr(13) 
    crt.Screen.Send "COMMAND STATIC TEXT" & chr(13) 
    crt.Screen.WaitForString "(config)#" 
    crt.Screen.Send "end" & chr(13) 
    crt.Screen.WaitForString "#" 
    crt.Screen.Send "wr" & chr(13) 
    crt.Screen.WaitForString "#" 
    crt.Screen.Send "exit" & chr(13) 
    crt.Screen.WaitForString "WAIT END STRING" 
Next 
End Sub 
+0

Wie ist das Format Ihrer Hosts-Datei? Welche Fehlermeldung erhalten Sie gegebenenfalls? "Nicht funktioniert" ist nicht als Problembeschreibung sinnvoll. Oh, und willkommen bei Stack Overflow! –

+0

Bearbeiten Sie Ihre Frage und senden Sie Ihre .csv-Daten – Hackoo

+0

Sie können auch davon inspiriert werden: [Funktion ReadFile (Pfad, Modus)] (http://StackOverflow.com/Questions/35299606/Read-text-and-Match-all -dates-in-text-Datei-sonst-write-value-to-error-txt-fi? answertab = aktiv # tab-top) – Hackoo

Antwort

1

Die Split-Befehl ist, was Sie brauchen. So ReadAll statt ReadLine

MyVar = Split(hosts.ReadAll, vbcrlf) 

For Each thing in MyVar 
    Msgbox Replace(thing, ",", "") 
Next 

Von Hilfe bei https://www.microsoft.com/en-au/download/details.aspx?id=2764

Split-Funktion

Gibt eine Null-basierte, eindimensionale Anordnung eine bestimmte Anzahl von Teil enthält.

Split(expression[, delimiter[, count[, compare]]]) 

Verwenden ersetzen das Komma zu entfernen.

+0

Sie benutzen bereits 'Split()' Problem, das sie nicht richtig machen. Die Verwendung von 'Readline()' wäre auch in Ordnung, wenn sie sicherstellen wollten, dass die Kommas nur zeilenweise in ein Array gelesen werden. Das Problem mit der 'ReadAll()' Methode ist, dass es auch im Carriage Return + Linefeed am Ende jeder Zeile in der CSV gelesen wird, ganz zu schweigen davon, dass es für größere Dateien weniger effizient ist. – Lankymart

+0

Aber es macht ein Array. Einzelfeld-CSV haben keine Kommas. –

+0

In der Frage wurde der einzelne Feldbit nicht beachtet, für eine einzelne Zeile sollte es gut funktionieren. Denken Sie auch, dass Sie vielleicht gemeint haben, dass ein einzelnes Feld CSV keine neuen Zeilen hat, keine Kommas * (von denen sie Kommas haben, ist es eine CSV) *. – Lankymart