2016-09-15 4 views
-2

EDIT 2

einfach mit, um deutlich zu machen - diese Frage nicht für „DA CODEZ“ bittet, nur eine Idee über mögliche Ansätze in VBScript. Es ist nicht meine Waffe der Wahl, und wenn ich brauchte diese auf einem un * x-Box zu tun, dann würde ich nicht mit diesem stört jemand sein ...Finden fehlende Werte zwischen Textdateien VBScript


ich zwei Textdateien haben. Datei A enthält eine Liste der Schlüssel:

00001 13756 000.816.000 BE2B 
00001 13756 000.816.000 BR1B 
00002 16139 000.816.000 BR1B 
00001 10003 000.816.000 CH1C 
00001 10003 000.816.000 CH3D 
00001 13756 000.816.000 CZ1B 
.... 
.... 

Datei B, tab getrennt, enthält zwei Spalten die Schlüssel und ein UUID:

00003 16966 001.001.023 2300 a3af3b1d-ea04-4948-ba25-59b36ae364ae 
00001 12119 001.001.023 CZ1B e6efe825-0759-48b0-89b9-05bbe5d49625 
00002 16966 001.001.023 BR1B d3a1d62b-a0d5-43c3-ba49-a219de5f32a5 
00001 12119 001.001.023 BR1B 5d74af27-ed4b-4f90-8229-90b6d807515b 
00001 10009 001.001.024 BR1B 590409cc-496a-49eb-885c-9bbc51863363 
00002 24550 001.001.024 2100 46ecea5d-f8f5-4df9-92cf-0b73f6c81adc 
00001 12119 001.001.024 CZ1B e415ce6f-7394-4a66-a7f8-f76487e78086 
00002 16966 001.001.024 CZ1B c591a726-4d71-4f61-adfd-63310d21d397 
.... 
.... 

I extrahieren müssen, plain VBScript Verwendung die UUIDs für diese Einträge in Datei B, die keinen übereinstimmenden Eintrag in Datei A haben. (Ich muss für die Geschwindigkeit optimieren, wenn das ein wichtiges Kriterium ist.) Das Ergebnis sollte eine Datei verwaister UUID-Codes sein.

Wenn das nicht einfach/möglich ist, ist das auch eine Antwort - ich kann es in der db, die wir verwenden, aber die Leistung ist beklagenswert unzureichend. Es war einfach hin und weg, wie viel schneller VBScript war als die db-Lösung für eine frühere Verarbeitungsaufgabe.

EDIT

Jemand schlug vor, eine Art von ADO-Bibliothek verwenden, nachdem Sie die Datei in CSV-Umwandlung, die in ich suche.

+0

Was haben Sie versucht, haben Sie etwas Code, den Sie teilen können ?, wie Sie wahrscheinlich bewusst sind [so] ist nicht * Code * für "GIV ME DA CODEZ!". Wenn nicht [fragen] und eine [mcve] bereitstellen. – Lankymart

+0

Über welche Art von Bänden sprechen wir hier? Wenn die Datenbank nicht damit umgehen kann, bezweifle ich, dass VBScript der richtige Weg ist. – Lankymart

+0

Nein, wirklich Lankymart. Ich werde mich bemühen, das zu tun, kurz nachdem ich versucht habe, ADO-Sachen auseinander zu nehmen. – Dycey

Antwort

2

Vielleicht ist der schnellste Weg, es zu tun, ist nur das Betriebssystem zu fragen, es

Dim orphan 
    orphan = WScript.CreateObject("WScript.Shell").Exec(_ 
     "findstr /g:keys.txt /v uuids.txt" _ 
    ).StdOut.ReadAll() 

    WScript.Echo orphan 

heißt, findstr zu tun, verwenden Sie die uuids.txt Datei für Zeilen zu überprüfen, die in der jede der Linien nicht übereinstimmen keys.txt Datei

+0

Danke @MCND Nur damit Sie wissen - das rasierte einen 1h49min Prozess auf weniger als 2 Minuten ;-) Ich denke das ist ein 60x Gewinn ;-) Sehr geschätzt. Es ist immer wkward, wenn Sie nicht vertrauter Rasen sind, und Windows-Scripting ist mir ziemlich unbekannt. Ein kleiner Punkt - es gibt eine Antwort, die eine Lektüre wert ist für die [Probleme mit Findstr] (http://stackoverflow.com/questions/8844868/what-are-the-undographiced-features-and-limits-of-the-windows- findstr-comman). – Dycey

+0

Anständiger Ansatz. War VBScript immer eine Voraussetzung, dann @Dycey oder konnten Sie das genauso einfach über die Befehlszeile oder Batch-Datei machen? – Lankymart

+0

Die Serverumgebung ist gesperrt. Es ist jedoch möglich, ein VBScript innerhalb eines FileMaker-Zeitplans auszuführen. Es ist unangenehm und unbequem und völlig ungewohnt. Die ganze Sache ist, einen RV in einer Augenbinde rückwärts durch eine Seitengasse zu manövrieren, Thrash Metal bis zu 11 zu hören. Es scheint keinen "leicht" für diesen speziellen Job zu geben. ;-) – Dycey

Verwandte Themen