manuel33
Goto Top

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.
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]

Content-Key: 142479

Url: https://administrator.de/contentid/142479

Printed on: April 19, 2024 at 06:04 o'clock

Member: TsukiSan
TsukiSan May 10, 2010 at 03:03:49 (UTC)
Goto Top
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.
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
Mitglied: 77559
77559 May 10, 2010 at 05:00:14 (UTC)
Goto Top
Hallo Manuel,

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
Member: manuel33
manuel33 May 10, 2010 at 17:56:44 (UTC)
Goto Top
Hallo LotPings,

da ich alles andere auch mit VBscript erstellt habe, wollte ich bei diesem Thema nicht wechseln.
Danke trotzdem für den Tipp

vG

manuel33
Member: manuel33
manuel33 May 10, 2010 at 18:01:33 (UTC)
Goto Top
Hallo Tsuki,

danke für deine Hilfe, das ist genau das was ich gesucht habe.

vG

manuel33