Via VBScript 2 TXT Dateien vergleichen und Unterschied in dritte TXT schreiben
Hallo an alle die von VBS mehr verstehen als ich.
Meine Frage:
ich habe 2 *.TXT Dateien
1 TXT stehen verschiedene Benutzernamen untereinander z.b.:
Klaus
lars
robert
claudia
2 TXT stehen aus AD ausgelesenen TXT Benutzer untereinander z.b.:
Klaus
robert
Lars
In TXT Nr. 3 oder auch in eine Msg Box sollen nur die Namen, die in der 2 TXT Datei fehlen hineingeschrieben werden.
Mein Ansatz teilweise im Netz gefunden und angepasst, leider werden damit nur gleiche Namen in ein TXT File geschrieben.
Auch durch Anpassungen und Veränderungen bekomme ich kein entsprechendes Ergebnis.
Ich hoffe Ihr könnt mir helfen, ist wahrscheinlich nur eine Kleinigkeit.
[Edit Biber] Codetags ergänzt. [/Edit]
Meine Frage:
ich habe 2 *.TXT Dateien
1 TXT stehen verschiedene Benutzernamen untereinander z.b.:
Klaus
lars
robert
claudia
2 TXT stehen aus AD ausgelesenen TXT Benutzer untereinander z.b.:
Klaus
robert
Lars
In TXT Nr. 3 oder auch in eine Msg Box sollen nur die Namen, die in der 2 TXT Datei fehlen hineingeschrieben werden.
Mein Ansatz teilweise im Netz gefunden und angepasst, leider werden damit nur gleiche Namen in ein TXT File geschrieben.
Auch durch Anpassungen und Veränderungen bekomme ich kein entsprechendes Ergebnis.
Ich hoffe Ihr könnt mir helfen, ist wahrscheinlich nur eine Kleinigkeit.
Dim WshShell, fso
Dim File1, File2, Filegesamt
Dim Datei1, Datei2, Dateigesamt
Dim Zeile1
Set WshShell = CreateObject("WScript.Shell")
set fso = CreateObject("Scripting.FileSystemObject")
Datei1=("datei1.txt")
Datei2=("datei2.txt")
Dateigesamt=("dateigesamt.txt")
set File1 = fso.OpenTextFile(Datei1,1, true)
set Filegesamt = fso.OpenTextFile(Dateigesamt,2, true)
Do While Not LCase(File1.AtEndOfStream)
Zeile1 = LCase(Trim(File1.Readline))
Set File2 = fso.OpenTextFile(Datei2,1, true)
Do While not LCase(File2.AtEndOfStream)
Zeile2 = LCase(Trim(File2.Readline))
if Zeile1 = Zeile2 then Filegesamt.writeline Zeile1
Loop
File2.Close
Loop
File1.Close
Filegesamt.Close
WSHShell.run "dateigesamt.txt"
[Edit Biber] Codetags ergänzt. [/Edit]
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 142479
Url: https://administrator.de/forum/via-vbscript-2-txt-dateien-vergleichen-und-unterschied-in-dritte-txt-schreiben-142479.html
Ausgedruckt am: 13.05.2025 um 23:05 Uhr
4 Kommentare
Neuester Kommentar
Hallo manuel33,
benutze bitte die Formatierungshilfen, um Codes besser darzustellen hier im Forum.
Um auf deine Frage zu antworten.
Ich hatte mal ein ähnliches Script, dass etwas anders aussieht, als deines.
Dies soltle aber prinzipiell deine Anforderungen erfüllen.
Viele Grüße
Tsuki
benutze bitte die Formatierungshilfen, um Codes besser darzustellen hier im Forum.
Um auf deine Frage zu antworten.
Ich hatte mal ein ähnliches Script, dass etwas anders aussieht, als deines.
Dies soltle aber prinzipiell deine Anforderungen erfüllen.
Dim FSO , MyTXT1, MyTXT2 , MyTXT3
Dim MeineDatei1, MeineDatei2 ,MeineDatei3
Dim Datei1 , Datei2 , Datei3
Dim Neuanlegen
Datei1 = "D:\Text1.txt"
Datei2 = "D:\Text2.txt"
Datei3 = "D:\Text3.txt"
Set FSO = createobject("Scripting.FileSystemObject")
Set MeineDatei1 = FSO.OpenTextFile(Datei1, 1)
MyTXT1 = split(MeineDatei1.ReadAll,vbcrlf)
MeineDatei1.Close
Set MeineDatei2 = FSO.OpenTextFile(Datei2, 1)
MyTXT2 = split(MeineDatei2.ReadAll,vbcrlf)
MeineDatei2.Close
If Ubound(MyTXT1) > ubound(MyTXT2) Then
for i = 0 to Ubound(MyTXT1)
Neuanlegen = 1
for ii = 0 to Ubound(MyTXT2)
if MyTXT2(ii) = MyTXT1(i) then
Neuanlegen = 0
end if
next
If Neuanlegen = 1 then
If MyTXT3 = "" then
MyTXT3 = MyTXT1(i)
Else
MyTXT3 = MyTXT3 & vbcrlf & MyTXT1(i)
End If
End If
next
Else
for i = 0 to Ubound(MyTXT2)
Neuanlegen = 1
for ii = 0 to Ubound(MyTXT1)
if MyTXT1(ii) = MyTXT2(i) then
Neuanlegen = 0
end if
next
If Neuanlegen = 1 then
If MyTXT3 = "" then
MyTXT3 = MyTXT2(i)
Else
MyTXT3 = MyTXT3 & vbcrlf & MyTXT2(i)
End If
End If
next
End If
If Not MyTxt3 = "" then
Set MeineDatei3 = FSO.CreateTextFile(Datei3, true)
MeineDatei3.Write (MyTXT3)
MeineDatei3.Close
End If
Viele Grüße
Tsuki

Hallo Manuel,
wenn es nicht unbedingt vbscript sein muss,
tut es auch dieser Einzeiler auf der Kommandozeile/Batch:
Gruß
LotPings
wenn es nicht unbedingt vbscript sein muss,
tut es auch dieser Einzeiler auf der Kommandozeile/Batch:
findstr /I /V /G:User-AD.txt User.txt >User-NEU.txt
Gruß
LotPings