1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 6: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180:
$infile = „data.txt“; #$infile = $batOutput; ## Ausgabedatei-Handgriffe (öffnen) öffnen (OUT1, „> \!“. $state.$status. „INFO.txt“) oder sterben „können nicht \! sich zu öffnen“. $state.$status. „INFO.txt: $! “; öffnen (OUT2, „> \!“. $state.$status. „INFOspdsht.txt“) oder sterben „können nicht \! sich zu öffnen“. $state.$status. „INFO.txt $! “; öffnen (ERRLOG, „> \! errors.log“) oder sterben „können nicht sich öffnen! errors.log $! “; ## Druck-Überschriften zur spdsht Akte Druck OUT2 „; ; ; ; Whitespace; ; DPI bestimmen die Größe neu; ; ; \ n“; Druck OUT2 „Dateiname; Baut.; AlphCnl; Foto; Wid; Len; Res 0; x0; ; ; MB \ n“; ## Konfigurations-Daten für maskierendatenausgang mein %config = ( „LZW“ => „färbt“, „Lempel-Ziv u. walisische kodierung“ => „färbt“, „CCITT gruppieren 4“ => „bkwhts“, „CCITT gruppieren die kodierung mit 4 Faksimiles“ => „bkwhts“, „Kein“ => „keine“, „keine“ => „keine“, „Rgb-Farbe“ => „färbt“, „Minute-sein-weißes“ => „bkwhts“, „Minute-sein-schwarzes“ => „bkwhts“, „Palettenfarbe (RGB vom colormap)“ => „färbt“, „Entschließung“ => Unterseeboot { mein @r = spaltete auf sich (/,/, Verschiebung); $r [0] =~ s \ D//g; $r [1] =~ s \ D//g; Rückhol@r [0.1]; }, ); mein @config = Schlüssel %config; mein $file = $infile; # dieses einstellen, wie gebraucht. mein $fh, „<“, $file öffnen oder sterben „kann <$file> für Messwert $ nicht öffnen! “; $ = „ART: \ n“; während (mein $record = <$fh>) { chomp $record; zunächst wenn $record eq ''; $record =~ s (tiff-Verzeichnis am Versatz. +) \ n; ## zukünftiger Gebrauch, für das Erhöhen von Störungen $errorCount = 0; mein ($fullpath, $data) = aufspalten (/\ n, $record, 2); $fullpath =~ s: $; mein ($drv, $path, $file) = Akte:: Spec->splitpath ($fullpath); ## erhalten Kompressions-Entwurfdaten $cs = $config {$1} wenn ($data =~ s-\ s-{2} Kompressions-Entwurf: \ s+ (. *?)\ n); wenn (! definiertes $cs) { Druck „[STÖRUNG]: Kompressions-Entwurf für $file nicht gefunden. \ n“; Druck ERRLOG „[STÖRUNG]: Kompressions-Entwurf für $file nicht gefunden. \ n“; $errorCount++; #next; } ## erhalten photometrische Deutungsdaten $pi = $config {$1} wenn ($data =~ s-\ s-{2} photometrische Deutung: \ s+ (. *?)\ n); wenn (! definiertes $pi) { Druck „[STÖRUNG]: Photometrische Deutung für $file nicht gefunden. \ n“; Druck ERRLOG „[STÖRUNG]: Photometrische Deutung für $file nicht gefunden. \ n“; $errorCount++; #next; } ## erhalten Spitzen-/Beispieldaten $bits = $1, wenn ($data =~ s \ s-{2} Bits \ /Sample: \ s+ (. *?)\ n); wenn (! definiertes $bits) { Druck „[STÖRUNG]: Spitzen-/Beispieldaten für $file nicht gefunden. \ n“; Druck ERRLOG „[STÖRUNG]: Spitzen-/Beispieldaten für $file nicht gefunden. \ n“; $errorCount++; #next; } ## erhalten Beispiel-/Pixeldaten $pixels = $1, wenn ($data =~ s-\ s-{2} Proben \ /Pixel: \ s+ (. *?)\ n); wenn (! definiertes $pixels) { Druck „[STÖRUNG]: Beispiel-/Pixeldaten für $file nicht gefunden. \ n“; Druck ERRLOG „[STÖRUNG]: Beispiel-/Pixeldaten für $file nicht gefunden. \ n“; $errorCount++; #next; } ## erhalten AlphaChnl Wert (Spitzen * Pixel) $alphachnl = $bits * $pixels; wenn ($alphachnl == 1) { $alphachnl = „bkwhts“; } elsif ($alphachnl == 8) { $alphachnl = „färbt“; } elsif ($alphachnl == 24) { $alphachnl = „doLOGO“; } sonst { $alphachnl = „unknwn“; } ## erhalten Entschließungdaten mein @r = $config {„Entschließung“} - > ($1), wenn ($data =~ s-\ s-{2} Entschließung: \ s+ (. *?)\ n); ## erhalten Breiten-/Längendaten mein ($w, $l) = ($1, $2), wenn ($data =~ s \ s-{2} Bild-Breite: (\ d+) Bild-Länge: (\ d+) \ n); ## Breite wenn (! definiertes $w) { Druck „[STÖRUNG]: Breite für $file nicht gefunden. \ n“; Druck ERRLOG „[STÖRUNG]: Breite für $file nicht gefunden. \ n“; $errorCount++; #next; } ## Länge wenn (! definiertes $l) { Druck „[STÖRUNG]: Länge für $file nicht gefunden. \ n“; Druck ERRLOG „[STÖRUNG]: Länge für $file nicht gefunden. \ n“; $errorCount++; #next; } ## Entschließung wenn (! definiertes $r [0] || ! definiertes $r [1]) { Druck „[STÖRUNG]: Entschließung für $file nicht gefunden. \ n“; Druck ERRLOG „[STÖRUNG]: Entschließung für $file nicht gefunden. \ n“; $errorCount++; #next; } ## erhalten Größe Akten der TIF-(F) mein $filesize = (-) s $fullpath/(1024 * 1024); mein $size_in_mb = sprintf „%.2f“, $filesize; ## Störungs-Überprüfung wenn ($errorCount > 0) { Druck „[Info]: $file wurde nicht, zu viele Störungen verarbeitet. \ n“; zunächst; } $data =~ s \ n$//; ## ** für Entstörung - auszusortieren Drucke ** ## Druck $, verbinden („: “, $file, $cs, $bits, $pi, $w, $l, @r, $size_in_mb, „\ n“), $data,“ \ n "; Druck „, der $file \ n“ verarbeitet; Druck OUT1 $, verbinden („; “, $file, $cs, $bits, $pixels, $pi, $w, $l, @r, $size_in_mb, „\ n“), $data,“ \ n "; ## LA Ausgang wenn ($state eq „LA“) { Druck OUT2 „$file; “, „$cs; “, „$alphachnl; “, „$pi; “, „$w; “, „$l; “, „$r [0]; $r [1]; ; ; “, „$size_in_mb; ; “, „\ '$batch; ; ; ; “, „Anfang; “, „$file; ; ; ; ; ; ; ; ; ; “, „$size_in_mb; “, „Bewegung; “, „$file; “, „$dir_root \ \ getan; “, „\ n“; } ## Nanometer-Ausgang elsif ($state eq „Nanometer“) { Druck OUT2 „$file; “, „$cs; “, „$alphachnl; “, „$pi; “, „$w; “, „$l; “, „$r [0]; $r [1]; ; ; “, „$size_in_mb; ; “, „\ '$batch; ; ; ; “, „Anfang; “, „$file; “, „$size_in_mb; “, „Bewegung; “, „$file; “, „$dir_root \ \ getan; “, „\ n“; zunächst; } ## OK/UT Ausgang elsif ($state eq „OKAY“ || $state eq „UT“) { Druck OUT2 „$file; “, „$cs; “, „$alphachnl; “, „$pi; “, „$w; “, „$l; “, „$r [0]; $r [1]; ; ; “, „$size_in_mb; ; “, „\ '$batch; ; ; ; “, „Anfang; “, „$file; “, „$size_in_mb; “, „Bewegung; “, „$file; “, „$dir_root \ \ getan; “, „Anfang; “, $file. „f; “, „Bewegung; “, $file. „f; “, „$dir_root \ \ getanes \ \ TEMPdone; “, „\ n“; zunächst; } ## TX/WY Ausgang elsif ($state eq „TX“ || $state eq „WY“) { Druck OUT2 „$file; “, „$cs; “, „$alphachnl; “, „$pi; “, „$w; “, „$l; “, „$r [0]; $r [1]; “, „\ der Bewegung $dir_root \ $file $dir_root \ \ $cs \ \ $file; ; “, „$size_in_mb; ; “, „\ '$batch; ; ; “, „Anfang; “, „$dir_root \ \ $cs \ \ $file; “, „$file; “, „$size_in_mb; “, „Bewegung; “, „$dir_root \ \ $cs \ \ $file; “, „$dir_root \ \ getan; “, „Anfang; “, $file. „f; “, „Bewegung; “, $file. „f; “, „$dir_root \ \ getanes \ \ TEMPdone; “, „\ n“; zunächst; } elsif ($state eq „KEINE“ || $state eq“--„ || $state eq „ANDERES“) { Druck OUT2 „$file; “, „$cs; “, „$alphachnl; “, „$pi; “, „$w; “, „$l; “, „$r [0]; $r [1]; “, „$size_in_mb \ n“; zunächst; } } schließen (OUT1) oder sterben „kann out1 nicht schließen: $! “; schließen (OUT2) oder sterben „kann out2 nicht schließen: $! “; schließen (ERRLOG) oder sterben „kann Störspeicher nicht schließen: $! “; schließen ($fh) oder sterben „kann $fh nicht schließen: $! “;
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 6: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186:
Allgemeine Funktion FindEmailInString (StringToSearch als Schnur) als Schnur Schwaches sExp als Schnur sExp = „\ b [A-Z0-9. _%+-] +@ [A-Z0-9. -] + \. [A-Z] {2.4} \ b“ FindEmailInString rgxExtract (StringToSearch, sExp) Enden-Funktion Allgemeines Funktion rgxExtract (wahlweise freigestelltes ByVal Ziel als Variante, _ Wahlweise freigestelltes Muster als Schnur = "", _ Wahlweise freigestelltes ByVal Einzelteil als lang = 0, _ Wahlweise freigestelltes CaseSensitive, wie Boolesch = falsch, _ Wahlweise freigestelltes FailOnError, wie Boolesch = richten, _ aus Wahlweise freigestellt als Boolesches = falsches) _ fortbestehen Als Variante 'Zusammenpassende Funktion des regulären Ausdrucks verwendbar für Gebrauch 'in VB/A im Allgemeinen und in den Zugangsfragen. 'Durch John Nurick. Modernisiertes 14. Januar 06. 'Nimmt eine Suchschnur (Ziel) und einen regulären Ausdruck '(Muster) und ein wahlweise freigestelltes Einzelteilargument. '- Wenn Einzelteil ausgelassen wird und eine Teilkette des Ziels Muster zusammenbringt, ' Rückkehr die Teilkette. '- Wenn Muster die Gruppierung von Klammern umfaßt, eine Teilkette des Ziels ' bringt Muster zusammen und Einzelteil ist eine ganze Zahl, zurückbringt das submatch ' spezifiziert durch Item (erstes submatch ist Einzelteil 0). Wenn es nicht gibt ' genügende submatches, Rückkehr Null. Negative Werte des Einzelteilanfangs ', zählend mit dem letzten submatch. '- Wenn kein Gleiches, Rückkehr Null. '- Rückkehr Null auf Störung, es sei denn FailOnError zutreffend ist. ' Passt immer an das gesamte Ziel an (d.h. global und ' Mehrkanal zutreffend sein). 'CaseSensitive Gleiche unabhängig davon Fall. 'Bestehen Kontrollen ob der kompilierte RegExp Gegenstand weiter 'bleibt im Gedächtnis, das zum folgenden Anruf zu bereit ist 'Funktion oder, ob sie sofort entledigt wird. Dieses 'bedeutet, dass die Funktion in den Fragen ohne zu haben verwendet werden kann 'zu verursachen, einen neuen RegExp Gegenstand für kompilieren, benutzen und zerstören 'jede Reihe, die verarbeitet wird. Aber es bedeutet auch dass der Gegenstand 'Überreste im Gedächtnis nach der Frage ist gelaufen. Zu zerstören 'das Gedächtnis einwenden und freigeben, benennen diese Funktion eine 'letztes Mal ohne Argumente. ' ', die Funktion mit verschiedenen Argumenten benennend (z.B. ein neues 'Muster) recompiles den RegExp Gegenstand, so 'die Funktion kann in den verschiedenen Fragen verwendet werden. Jedoch dort 'sein können Probleme, wenn zwei Gewinde die Funktion an benennen 'die gleiche Zeit. Const rgxPROC_NAME = „rgxExtract“ Statisches Erz als Gegenstand 'VBScript_RegExp_55.RegExp 'Statische Erklärungmittel müssen wir nicht verursachen 'und den RegExp Gegenstand jede einzelne Zeit kompilieren 'die Funktion wird benannt. Schwache oMatches als Gegenstand 'VBScript_RegExp_55.MatchCollection Auf Störung Goto- ErrHandler rgxExtract = Null-'Rückstellungsrückholwert 'Notiz:: wenn FailOnError falsch ist, bringt Null auf Störung zurück Wenn IsMissing (Ziel) dann 'Dieses ist das Signal, sich Erz zu entledigen Erz einstellen = nichts Funktion 'mit Default-Wert herausnehmen Beenden wenn 'Den RegExp Gegenstand wenn notwendig verursachen Wenn Erz nichts dann ist Erz = CreateObject („VBScript.Regexp“) einstellen Beenden wenn Mit Erz 'Überprüfen, ob die gegenwärtigen Argumente (anders als Ziel) 'zu denen unterschiedlich sein, die im Erz gespeichert werden, und sie aktualisieren '(dadurch recompiling das regex) nur wenn notwendig. Wenn CaseSensitive = .IgnoreCase dann .IgnoreCase = nicht .IgnoreCase Beenden wenn . Global = ausrichten . Mehrkanal = ausrichten ' Wenn Mehrkanal <> . Mehrkanal dann ' . Mehrkanal- = Mehrkanal ' Beenden wenn Wenn Muster <> . Muster dann . Muster = Muster Beenden wenn 'Schließlich, das Gleiche durchführen Wenn IsNull (Ziel) dann rgxExtract = Null Sonst oMatches = oRE.Execute (Ziel) einstellen Wenn oMatches.Count > 0 dann Wenn oMatches (0) .SubMatches.Count = 0 dann 'Keine () Gruppe im Muster: das Gleiche zurückbringen Wenn Einzelteil < 0="" Then="">= oMatches.Count 'Positives Einzelteil überstieg die Zahl der Gleicher rgxExtract = Null Wenn FailOnError dann Err.Raise 9 Beenden wenn Sonst umkleiden rgxExtract = oMatches (Einzelteil) Ende auserwählt Sonst 'es gibt eine oder mehrere () gefangengenommenen Gruppen im Muster 'das zurückbringen, das von Item spezifiziert wird Mit oMatches (0) .SubMatches Wenn Einzelteil < 0="" Then="">=. Zählimpuls 'Positives Einzelteil überstieg die Zahl submatches rgxExtract = Null Wenn FailOnError dann Err.Raise 9 Beenden wenn 'Gültige Einzelteilzahl sonst umkleiden rgxExtract =. Einzelteil (Einzelteil) Ende auserwählt Ende mit Beenden wenn Sonst rgxExtract = Null Beenden wenn Beenden wenn Mit beenden 'Aufräumen und normaler Ausgang Wenn, nicht dann fortzubestehen Erz = nichts einstellte Funktion herausnehmen ErrHandler: Wenn FailOnError dann Mit sich irren Fall vorwählen. Zahl 'Die Mitteilung „der Gegenstand-definierten Störung“ der Rückstellung ersetzen Rechtssache 9: . Beschreibung = „Tiefzeichen aus Strecke (das Einzelteilzahl erbetene“ _ heraus u. „war grösser als die Zahl der gefundenen Gleichen oder als die Zahl von“ _ u. „(...) Gruppierung/, die gefangennimmt Klammern im Muster).“ Rechtssache 13: . Beschreibung = „Art Fehlanpassung, vermutlich, weil“ _ u. „das "" Ziel "" Argument konnte nicht in eine Schnur umgewandelt werden“ Rechtssache 5017: . Beschreibung = „Syntaxstörung im regulären Ausdruck“ Rechtssache 5018: . Beschreibung = „unerwarteter Quantifizierer im regulären Ausdruck“ Rechtssache 5019: . Beschreibung = „erwartet worden „]“ im regulären Ausdruck " Rechtssache 5020: . Beschreibung = „erwartet ")“ im regulären Ausdruck " Fall sonst Wenn Erz nichts 'Regexp Gegenstand verursachen dann nicht gekonnt ist . Beschreibung = „konnte VBScript.RegExp Gegenstand nicht verursachen. “ U. Err.Description Sonst 'unerwartete Störung . Beschreibung = rgxPROC_NAME u. „: “ u. Beschreibung Beenden wenn Auserwähltes beenden Erz einstellen = nichts . Err.Number, rgxPROC_NAME, _ anheben rgxPROC_NAME u. „(): “ u. Beschreibung Ende mit Sonst 'Ausfallen still Err.Clear Erz einstellen = nichts Beenden wenn Funktion beenden