Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Arrays miteinander vergleichen und Gemeinsamkeiten ausgeben (VBScript)

Mitglied: Breede

Breede (Level 1) - Jetzt verbinden

10.12.2007, aktualisiert 12.12.2007, 6497 Aufrufe, 9 Kommentare

Hi,

ich habe 2 Textdateien die aus 2 Arrays enstanden sind.

Es ist nun notwendig diese zu vergleichen und die Gemeinsamkeiten in ein drittes Array/Datei auszugeben.

Beispiel:

Array1

Hallo
Test
4

6
32345
44g

Array2

1
2
3
4
Hallo
5
Test

Die Ausgabe aus dem Beispiel müsste nun seien:

Hallo
Test
4

Habt ihr eine Idee? Bisher habe ich nur eine Möglichkeit gefunden Zeile für Zeile zu vergleichen, da aber die Werte in beiden Arrays an unterschiedlichen Positionen stehen, war es immer ein Unterschied und wurde so nicht mit ausgegeben.

Danke schonmal.

Gruß
Marcus
[Edit: Dani - 10.12.2007 16:15]
Ich habe mir erlaubt, die einzelnen Schnipsel in einen CODE-Block zu packen. Macht das ganze ein bisschen runder. Mehr dazu findet ihr hier.
Mitglied: Schi73
10.12.2007 um 15:56 Uhr
Hallo Markus,

probiers mal so:
01.
Dim WshShell, fso 
02.
Dim LogFile, LogFileneu 
03.
Dim DateiName, Dateinameneu 
04.
Dim Zeile 
05.
 
06.
Set WshShell = CreateObject("WScript.Shell") 
07.
set fso = CreateObject("Scripting.FileSystemObject") 
08.
 
09.
DateiName="testdatei.txt" 
10.
Dateinameneu="testdateineu.txt" 
11.
 
12.
Set LogFile = fso.OpenTextFile(Dateiname,1, True) 
13.
Set LogFileneu = fso.OpenTextFile(Dateinameneu,2, True) 
14.
 
15.
Do While Not logfile.AtEndOfStream 
16.
  Zeile = RTrim(logfile.Readline) 
17.
  if len(Zeile) >0 then logfileneu.writeline Zeile 
18.
Loop 
19.
LogFile.Close 
20.
LogFileneu.Close

Gruß Schi
Bitte warten ..
Mitglied: Breede
10.12.2007 um 16:02 Uhr
Danke für die Antwort, aber die Problematik hat sich binnen Sekunden geändert.

Problem mit den Leerzeilen konnte ich lösen, war wohl ein Geistesblitz.

Derzeitiges Problem ist oben beschrieben.

Danke trotzdem Schi.
Bitte warten ..
Mitglied: Schi73
10.12.2007 um 16:10 Uhr
Nochmal Hallo Marcus (<-- diesma richtig )

also neues Script:
01.
Dim WshShell, fso 
02.
Dim LogFile1, LogFile2, LogFileneu 
03.
Dim DateiName1, DateiName2, Dateinameneu 
04.
Dim Zeile1 
05.
 
06.
Set WshShell = CreateObject("WScript.Shell") 
07.
set fso = CreateObject("Scripting.FileSystemObject") 
08.
 
09.
DateiName1="testdatei1.txt" 
10.
DateiName2="testdatei2.txt" 
11.
Dateinameneu="testdateineu.txt" 
12.
 
13.
Set LogFile1 = fso.OpenTextFile(Dateiname1,1, True) 
14.
Set LogFileneu = fso.OpenTextFile(Dateinameneu,2, True) 
15.
 
16.
Do While Not logfile1.AtEndOfStream 
17.
	Zeile1 = RTrim(logfile1.Readline)     
18.
	Set LogFile2 = fso.OpenTextFile(Dateiname2,1, True) 
19.
        Do While Not logfile2.AtEndOfStream 
20.
    		if Zeile1 = RTrim(logfile2.Readline) then logfileneu.writeline Zeile1 
21.
	Loop 
22.
	LogFile2.Close 
23.
Loop 
24.
LogFile1.Close 
25.
LogFileneu.Close
So sollte es gehen
Kann evtl. etwas daueren, jenachdem wie groß die Dateien sind

Gruß Schi
Bitte warten ..
Mitglied: Breede
10.12.2007 um 16:22 Uhr
Super, hat funktioniert und da du mir schonmal so gut geholfen hast, versuche ich es gleich nochmal. :P

Ich lasse eine Anweisung in einem Loop laufen und jedesmal gibt er eine Fehlermeldung aus.
Er beendet die Anweisungen in dem Loop zwar so wie gewünscht, jedoch wird durch den Fehler alles was nach dem Loop oder mit eintretendem "EOF", abgebrochen.

Da stehen aber leider noch weitere Verarbeitungen an.


Hier der Code:

Do Until objRecordSet.EOF
strRecordsetInhalt = Trim(objRecordSet.GetString(2, , "|",VbCrLf,""))
objRecordSet.MoveNext
Loop

Fehlermeldung:

N:\Test2.vbs(30, 2) ADODB.Recordset: Entweder BOF oder EOF ist True, oder der aktuelle Datensatz wurde gelöscht. Der angeforderte Vorgang benötigt einen aktuellen Datensatz.

Google konnte mir nicht helfen.
Bitte warten ..
Mitglied: Biber
10.12.2007 um 16:31 Uhr
Moin Breede,

Da stehen aber leider noch weitere Verarbeitungen an.
Da stehen dann aber genauere Beschreibungen an oder der Gesamtplan oder der bis hierhin vorhandene Sourcecode.

Aus dem "Beispiel" im Eröffnungsbeitrag lässt sich nun nicht ableiten, wer denn Dir einen ADODb-RecordSet ins Nest gelegt hat und wofür.

Bitte etwas präzisieren - Shi73 ist zwar gut im Raten, aber das ist eigentlich nicht der Sinn dieses Forums.

Grüße
Biber
Bitte warten ..
Mitglied: Breede
10.12.2007 um 16:35 Uhr
Ok, hier nun der komplette Code.
01.
Const ADS_SCOPE_SUBTREE = 5 
02.
Dim fso, file, strRecordsetInhalt, a 
03.
Set fso = CreateObject("Scripting.FileSystemObject") 
04.
Set file1 = fso.CreateTextFile("c:\datei1.txt", True) 
05.
 
06.
Set objConnection = CreateObject("ADODB.Connection") 
07.
Set objCommand =   CreateObject("ADODB.Command") 
08.
objConnection.Provider = "ADsDSOObject" 
09.
objConnection.Open "Active Directory Provider" 
10.
Set objCommand.ActiveConnection = objConnection 
11.
 
12.
objCommand.Properties("Page Size") = 1000 
13.
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE 
14.
 
15.
objCommand.CommandText = 	"SELECT mail FROM 'LDAP://DC=www,DC=xxx,DC=de' WHERE objectCategory='group'" & _ 
16.
							"OR  objectCategory='user'" & _ 
17.
							"AND objectCategory='person'" & _ 
18.
							"Order by mail" 
19.
 
20.
Set objRecordSet = objCommand.Execute 
21.
 
22.
Do Until objRecordSet.EOF 
23.
	strRecordsetInhalt = Trim(objRecordSet.GetString(2, , "|",VbCrLf,"")) 
24.
	strRecordsetInhalt = UCase(strRecordsetInhalt) 
25.
	file1.WriteLine(strRecordsetInhalt) 
26.
	objRecordSet.MoveNext 
27.
Loop
Bitte warten ..
Mitglied: Biber
10.12.2007 um 17:00 Uhr
Danke Breede,

ich habe es in Code-Tags gesetzt, siehe bitte auch Danis Hinweis ganz oben.

Okay, dass mal kein einziger Satz zurückkommt solltest Du ohnehin berücksichtigen, aber auch , dass gar kein Recordset-Object zurückkommt.

Bei der Bedingung kann aber auch nie etwas zurückkommen, oder:
01.
.... 
02.
WHERE objectCategory='group' " & _ 
03.
            " OR  objectCategory='user' " & _ 
04.
      " AND objectCategory='person'" &.....
Die objectCategory kann niemals nicht gleich 'group' AND-whatever sein.

Bestenfalls in einem philosophischen Sinn ("Wer bin ich? Und wenn ja, wie viele?").
Aber das wolltest Du bestimmt nicht hier diskutieren. Und erst recht nicht mit mir.

Achte bitte auch auf ein Mindestmaß an Leerzeichen innerhalb der einzelnen WHERE-clause-Tokens. Du hast zwischen "...= 'group'" und dem ersten Wort der Folgezeile kein Leerzeichen.

Grüße
Biber
Bitte warten ..
Mitglied: Breede
11.12.2007 um 08:17 Uhr
Habe ein paar Änderungen vorgenommen, der Fehler ist aber weiterhin vorhanden. Datensätze bekomme ich aber zurück, den Inhalt der Textdatei bilde ich mir ja nicht ein.

Jetzt mal etwas schöner.

01.
Const ADS_SCOPE_SUBTREE = 5 
02.
Dim fso, strRecordsetInhalt, file1 
03.
Set fso = CreateObject("Scripting.FileSystemObject") 
04.
Set file1 = fso.CreateTextFile("n:\datei1.txt", True) 
05.
 
06.
Set objConnection = CreateObject("ADODB.Connection") 
07.
Set objCommand =   CreateObject("ADODB.Command") 
08.
objConnection.Provider = "ADsDSOObject" 
09.
objConnection.Open "Active Directory Provider" 
10.
Set objCommand.ActiveConnection = objConnection 
11.
 
12.
objCommand.Properties("Page Size") = 1000 
13.
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE 
14.
 
15.
objCommand.CommandText = 	"SELECT mail FROM 'LDAP://DC=www,DC=xxx,DC=de' WHERE objectCategory='group'  " & _ 
16.
							" OR  objectCategory='user' " & _ 
17.
							" Order by mail " 
18.
 
19.
Set objRecordSet = objCommand.Execute 
20.
 
21.
Do While Not objRecordSet.EOF 
22.
	strRecordsetInhalt = Trim(objRecordSet.GetString(2, , "|",VbCrLf,"")) 
23.
	strRecordsetInhalt = UCase(strRecordsetInhalt) 
24.
	file1.WriteLine(strRecordsetInhalt) 
25.
	objRecordSet.MoveNext 
26.
Loop 
27.
 
28.
file1.Close
Bitte warten ..
Mitglied: Breede
12.12.2007 um 10:32 Uhr
Hier die Lösung:

01.
''''' Konstanten ''''' 
02.
 
03.
Const ADS_SCOPE_SUBTREE = 5 
04.
 
05.
''''' Variablen ''''' 
06.
 
07.
Dim fso 
08.
Dim strRecordsetInhalt 
09.
Dim File_SAC_Input 
10.
Dim File_THR_Input 
11.
 
12.
Set fso = CreateObject("Scripting.FileSystemObject") 
13.
Set File_SAC_Input  = fso.CreateTextFile("N:\SAC_Input.txt", True) 
14.
Set File_THR_Input  = fso.CreateTextFile("N:\THR_Input.txt", True) 
15.
 
16.
''''' Verbindung zum Active Directory ''''' 
17.
 
18.
Set objConnection = CreateObject("ADODB.Connection") 
19.
Set objCommand =   CreateObject("ADODB.Command") 
20.
objConnection.Provider = "ADsDSOObject" 
21.
objConnection.Open "Active Directory Provider" 
22.
Set objCommand.ActiveConnection = objConnection 
23.
 
24.
objCommand.Properties("Page Size") = 1000 
25.
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE 
26.
 
27.
''''' Abfrage und Ausgabe per SQL über LDAP ''''' 
28.
 
29.
objCommand.CommandText = 	" SELECT mail FROM 'LDAP://DC=www,DC=xxx,DC=de' Where mail <> '@' " &_ 
30.
							" Order by mail " 
31.
 
32.
Set objRecordSet = objCommand.Execute 
33.
 
34.
Do Until objRecordSet.EOF 
35.
	strRecordsetInhalt = Trim(objRecordSet.GetString(2, , "|",VbCrLf,"")) 
36.
	strRecordsetInhalt = UCase(strRecordsetInhalt) 
37.
	File_SAC_Input.WriteLine(strRecordsetInhalt) 
38.
''''' Hier die Lösung ''''' 
39.
	If not objRecordSet.EOF Or objRecordSet.BOF Then 
40.
		objRecordSet.movenext 
41.
	End If 
42.
Loop 
43.
 
44.
File_SAC_Input.Close
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Dateiinhalte vergleichen - Gemeinsamkeiten anzeigen

gelöst Frage von RotnasenkaterBatch & Shell9 Kommentare

Servus, liebe Gemeinde! Ich suche ein Programm oder ein Batchfile, welches 2 Textdateien miteinander vergleicht und dann anzeigt, welche ...

Windows Server

Arrays vergleichen mit Powershell

gelöst Frage von SlainteMhathWindows Server5 Kommentare

Moin, ich sitze hier vor einen Problem mit Powershell, das mich schier wahnsinnig macht. Hintergrund: Die auf einem Windows ...

Microsoft

Tabellen miteinander vergleichen

Frage von Acht85Microsoft1 Kommentar

Hallo Community, ich habe 2 Tabellen mit Namen (die auch unterschiedlich geschrieben sein können, baer nicht mehrmals auftauchen) und ...

Datenbanken

Zwei Mysql-Datenbanken miteinander vergleichen

gelöst Frage von trallerDatenbanken2 Kommentare

Hallo, ich möchte unter Windows den Inhalt zweier Mysql-Datenbanken vergleichen. Die Datenbanken liegen als .sql vor, und sind auch ...

Neue Wissensbeiträge
Humor (lol)
(Part num your Hacked phone. +XX XXXXXX5200)
Erfahrungsbericht von Henere vor 13 StundenHumor (lol)1 Kommentar

Mein Handy hat aber ne ganz andere Endnummer. Muss ich mir jetzt Sorgen machen ? :-) Vielleicht betrifft es ...

Exchange Server

Letztes Update für Exchange 2016 CU9 war in gewisser Weise destruktiv

Erfahrungsbericht von DerWoWusste vor 15 StundenExchange Server6 Kommentare

Kurzer Erfahrungsbericht zu Exchange2016-KB4340731-x64 Der Exchangeserver hat wie gewöhnlich versucht, es in der Nacht automatisch zu installieren - abgesehen ...

Erkennung und -Abwehr

Neue Sicherheitslücke Foreshadow (L1TF) gefährdet fast alle Intel-Prozessoren

Information von Frank vor 1 TagErkennung und -Abwehr3 Kommentare

Eine neue Sicherheitslücke, genannt Foreshadow (alias L1TF) wurde auf der Usenix Security 18 von einem Team internationaler Experten veröffentlicht. ...

Vmware
VMware Updates gegen L1 Lücke
Information von sabines vor 1 TagVmware

Für die Vmware Produkte vCenter Server, ESXi, Workstation und Fusion stehe Updates bereit um die L1 Lücke zu schließen. ...

Heiß diskutierte Inhalte
Windows Server
Domäne einsilbig mit nur einem Namen benannt - sowie AD und MX auf einer VM Kardinalsfehler?
Frage von TomTestWindows Server48 Kommentare

Hallo liebe Freunde gepflegter Probleme, seit kurzem soll ich eine Domäne verwalten die zuvor von einem IT-Dienstleister erstellt und ...

Microsoft
VPN Verbindung kann nicht aufgebaut werden
Frage von AlexderITlerMicrosoft35 Kommentare

Hallo, Ich möchte an einem unserer PCs in unserer Tochterfirma eine VPN zu unserem Netzwerk einrichten. Das schlägt allerdings ...

Windows Server
Windows Server per Web auf Daten zugreifen und verwalten
Frage von matze2090Windows Server16 Kommentare

Hallo, ich würde gerne von außen auf meinem Windows Server zugreifen um auf meine Daten zu verwalten. Meine frage ...

DNS
Gibt es eine Art DNS Proxy?
Frage von icepietDNS16 Kommentare

Hallo Nerds, Ich würde gerne folgendes machen: ts.domain.de:3389 soll auf 1.2.3.4:3389 auflösen ts2.domain.de:3389 soll auf 1.2.3.4:3390 auflösen Gibt es ...