Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

VBS Zwei Textdateien vergleichen und die Unterschiede in eine dritte Datei schreiben

Frage Entwicklung

Mitglied: Azubi1452

Azubi1452 (Level 1) - Jetzt verbinden

17.01.2011, aktualisiert 18.10.2012, 6153 Aufrufe, 7 Kommentare

Hallo zusammen,

ich möchte zwei txt-Dateien miteinander vergleichen und die Unterschiede in eine dritte Datei schreiben.
Das ganze soll gut mit der instr-Funktion zu machen sein...
Ich habe hier auch schon angefangen aber leider bekomme ich nichtmal eine Fehlermeldung wenn ich das Skript ausführe. Könntet ihr mir einen Rat geben was falsch bzw. ich vergessen habe ?

Danke schonmal im Voraus.
Gruß, Azubi

01.
 Set fs =CreateObject("Scripting.FileSystemObject") 
02.
Set f1 = fs.OpenTextFile("pfad") 
03.
Set f2 = fs.OpenTextFile("pfad2") 
04.
Set f3 = fs.OpenTextFile("pfad3", 2, True) 
05.
do 
06.
da1 = f1.ReadAll 
07.
da2 = f2.ReadAll 
08.
x1 = StrComp(da1, da2, 1) '0 = binärer- / 1 = text-Vergleich  
09.
If x1 <> 0 Then 
10.
f3.WriteLine da2 
11.
End If 
12.
Loop Until f1.AtEndOfStream 
13.
f1.Close 
14.
f2.Close 
15.
f3.Close 
16.
WScript.Quit 
17.
 
18.
'------------------------Fertig----------------------------------------------' 
19.
MsgBox "Fertig!", Abgeschlossen, vbInfo
Mitglied: Logan000
17.01.2011 um 12:10 Uhr
Moin Moin

Zitat von Azubi1452:
Ich habe hier auch schon angefangen aber leider bekomme ich nichtmal eine Fehlermeldung wenn ich das Skript ausführe.
Könntet ihr mir einen Rat geben was falsch bzw. ich vergessen habe ?

Du hat vergessen mitzuteilen wo genau dein Problem liegt, bzw. was nicht funktioniert.

Gruß L.
Bitte warten ..
Mitglied: 76109
17.01.2011 um 12:24 Uhr
Hallo Logan000!

Naja, ein paar Dinge sind ja nicht zu übersehen

1. Die Do-Schleife macht nur Sinn, wenn die Zeilen einzeln eingelesen werden (ReadLine anstatt ReadAll).
2. Die MsgBox am Ende kann nie ausgegeben werden, wenn das Skript zuvor mit WScript.Quit beendet wird.

Gruß Dieter
Bitte warten ..
Mitglied: Azubi1452
17.01.2011, aktualisiert 18.10.2012
Moin !

Sorry, ich dachte mein Problem ergibt sich aus meiner Beschreibung.

Also ich habe das Skript in einem anderen Beitrag gefunden. Kann es aber leider nicht so ganz verstehen.
Jedenfalls soll dieses Skript genau das machen was ich möchte. Nur leider tut es das nicht.

Als ich es denn kopiert und ein paar andere Fehlermeldungen schon von selbst "beseitigen" konnte stehe ich nun vor dem Problem, dass dieses Skript irgendwo hängen bleibt und ich nicht weiß was los ist, da ich keine Fehlermeldung bekomme.

Von hier habe ich den Code: http://www.administrator.de/forum/vergleich-von-zwei-csv-dateien-und-sc ...

Gruß,
Azubi
Bitte warten ..
Mitglied: bastla
17.01.2011 um 13:26 Uhr
Hallo Azubi1452!

Soferne Du den Lösungsweg nicht auf VBS einschränken willst / musst, könnte folgende CMD-Zeile genügen:
findstr /x /l /v /g:pfad pfad2 >pfad3
Ansonsten könntest Du natürlich beide Dateien per ".ReadAll" einlesen und die Zeilen der beiden Arrays in einer Schleife vergleichen - zumindest, wenn Du davon ausgehen kannst, dass es nur innerhalb einzelner Zeilen Unterschiede gibt, die Anordnung und Anzahl der Zeilen aber in beiden Dateien gleich ist ...

Grüße
bastla
Bitte warten ..
Mitglied: Logan000
17.01.2011 um 13:44 Uhr
Moin

@Dieter
Zitat von 76109:
Hallo Logan000!
Naja, ein paar Dinge sind ja nicht zu übersehen

Stimmt Wohl, aber dewegen wird das was unser Azubi realisieren möchte auch nicht unbedung klarer.
Und 2. zeigt noch ganz andere Schwächen auf.

@Azubi1452
Zitat von Azubi1452:
>...stehe ich nun vor dem Problem, dass dieses Skript irgendwo hängen bleibt und ich nicht weiß was los ist, da ich keine Fehlermeldung bekomme.
Das Skript läuft auch "Fehlerfrei" durch (siehe Didis Kommentar), was dir der Taskmanager auch bestätigen dürfte.
Was 1. angeht musst du dir natürlich überlegen wie du vergleichen möchtest (Zeilenweise, Wortweise, Zeichenweise,.....).
Weiter soltest du Dir überlegen ob es vorkommen kann, das die 1. Datei mehr Zeilen (Wörter. Zeichen,...) als die 2. hat und wie dein Skript damit umgehen soll.

Gruß L.
Bitte warten ..
Mitglied: Azubi1452
19.01.2011 um 09:46 Uhr
Hallo !

Danke für eure Antworten.

Der Befehl findstr gibt 16 Zeilen aus. Aber eigentlich dürften nur 14 gefunden werden weil gleich die ersten beiden Zeilen aus der Ergebnisdatei in beiden anderen Dateien vorhanden sind. Das kann ich mir bisher nicht erklären.

Ich habe auch schon überlegt die Datei Zeilenweise einzulesen...aber leider gibt es innerhalb der Dateien auch unterschiede in der Anordnung der Zeilen..

Ich bin im Moment ein wenig ratlos..

Gruß,
Azubi
Bitte warten ..
Mitglied: bastla
19.01.2011 um 10:29 Uhr
Hallo Azubi1452!

Da die gesamte Zeile (Schalter "/x") verglichen wird, führen zB zusätzliche Leerzeichen (etwa am Zeilenende) zu einem Unterschied; ebenso wird Groß-/Kleinschreibung unterschieden (lässt sich mit "/i" verhindern) - ansonsten sollten gleiche Zeilen im Ergebnis nicht auftauchen ...

Und nur zur Sicherheit: Der zweite Schalter oben ist ein "L" ...

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung!

(2)

Erfahrungsbericht von ashnod zum Thema Internet ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (15)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...