VBScript Ausgabe von unterschiedlichen Einträgen in 2 Arrays
Hallo,
habe ein kleines Problem und zwar wie bekomme ich bei folgendem Script die 0 und die 2 (stellvertretend für andere Strings) ausgegeben und nicht nur die doppelten Einträge??
Weil so bekomme ich als Ergebnis nur 1 1
3 3
4 4 in eine Textdatei geschrieben, mich interessieren aber auch die übrigen Einträge.
mfg
Dim Array1(3), Array2(3)
const forwriting = 2
Array1(0) = "1"
Array1(1) = "2"
Array1(2) = "3"
Array1(3) = "4"
Array2(0) = "4"
Array2(1) = "3"
Array2(2) = "1"
Array2(3) = "0"
set fso = createobject("scripting.filesystemobject")
set f= fso.opentextfile("C:\Bat\backup\projekt\ergebnis.txt", 2)
for i = 0 to ubound(Array1)
for s = 0 to ubound(Array2)
if instr(Array1(i), Array2(s)) > 0 then
msgbox Array1(i) & " " & Array2(s)
f.writeline Array1(i) & " " & Array2(s)
end if
next
next
habe ein kleines Problem und zwar wie bekomme ich bei folgendem Script die 0 und die 2 (stellvertretend für andere Strings) ausgegeben und nicht nur die doppelten Einträge??
Weil so bekomme ich als Ergebnis nur 1 1
3 3
4 4 in eine Textdatei geschrieben, mich interessieren aber auch die übrigen Einträge.
mfg
Dim Array1(3), Array2(3)
const forwriting = 2
Array1(0) = "1"
Array1(1) = "2"
Array1(2) = "3"
Array1(3) = "4"
Array2(0) = "4"
Array2(1) = "3"
Array2(2) = "1"
Array2(3) = "0"
set fso = createobject("scripting.filesystemobject")
set f= fso.opentextfile("C:\Bat\backup\projekt\ergebnis.txt", 2)
for i = 0 to ubound(Array1)
for s = 0 to ubound(Array2)
if instr(Array1(i), Array2(s)) > 0 then
msgbox Array1(i) & " " & Array2(s)
f.writeline Array1(i) & " " & Array2(s)
end if
next
next
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 113327
Url: https://administrator.de/contentid/113327
Ausgedruckt am: 25.11.2024 um 23:11 Uhr
1 Kommentar
Hallo mrmojo und willkommen im Forum!
Etwa so:
Natürlich kannst Du die "Einzelgänger" auch zusätzlich in eine weitere Ausgabedatei schreiben.
Anzumerken wäre noch, dass Du nicht auf Gleichheit der Werte prüfst, sondern darauf, ob der Wert aus dem Array2 in einem Wert des Array1 enthalten ist, was allerdings bei gleicher Zeichenanzahl in den jeweiligen Strings zum selben Ergebnis führt.
[Edit] Als Ergänzung: Wenn tatsächlich auf Gleichheit der Einträge geprüft werden sollte, wäre auch die Verwendung eines "Dictionary" eine Möglichkeit:
[/Edit]
Grüße
bastla
Etwa so:
Dim Array1(3), Array2(3)
Array1(0) = "1"
Array1(1) = "2"
Array1(2) = "3"
Array1(3) = "4"
Array2(0) = "4"
Array2(1) = "3"
Array2(2) = "1"
Array2(3) = "0"
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.CreateTextFile("C:\Bat\backup\projekt\ergebnis.txt")
For i = 0 to UBound(Array1)
Found = False
For s = 0 To UBound(Array2)
If InStr(Array1(i), Array2(s)) > 0 Then
WScript.Echo Array1(i) & " " & Array2(s)
f.WriteLine Array1(i) & " " & Array2(s)
Found = True
Exit For
End If
Next
If Not Found Then WScript.Echo "Nur in Array1: " & Array1(i)
Next
For s = 0 to UBound(Array2)
Found = False
For i = 0 To UBound(Array1)
If InStr(Array1(i), Array2(s)) > 0 Then
Found = True
Exit For
End If
Next
If Not Found Then WScript.Echo "Nur in Array2: " & Array2(s)
Next
Anzumerken wäre noch, dass Du nicht auf Gleichheit der Werte prüfst, sondern darauf, ob der Wert aus dem Array2 in einem Wert des Array1 enthalten ist, was allerdings bei gleicher Zeichenanzahl in den jeweiligen Strings zum selben Ergebnis führt.
[Edit] Als Ergänzung: Wenn tatsächlich auf Gleichheit der Einträge geprüft werden sollte, wäre auch die Verwendung eines "Dictionary" eine Möglichkeit:
Set d = CreateObject("Scripting.Dictionary")
d.Add "1", False 'Eintrag hinzufügen, Vorgabe von "False" als Kennzeichen für "auch in Array2 enthalten"
d.Add "2", False
d.Add "3", False
d.Add "4", False
Array2 = Array("4","3","1","0")
Set fso = CreateObject("Scripting.FilesystemObject")
Set f = fso.CreateTextFile("C:\Bat\backup\projekt\ergebnis.txt")
For s = 0 to UBound(Array2)
Wert = Array2(s)
If d.Exists(Wert) Then
WScript.Echo Wert
f.WriteLine Wert
d.Item(Wert) = True 'Dictionary-Eintrag aktuallisieren
Else
WScript.Echo "Nur in Array2: " & Wert
End If
Next
For Each K In d.Keys
If Not d.Item(K) Then WScript.Echo "Nur in Array1: " & K 'für den Wert K ist noch immer "False" eingetragen, daher nicht in Array2 enthalten
Next
Grüße
bastla