Ich habe einige Dateien mit fester Zeilengröße und fester Feldgröße, aus denen ich Informationen extrahieren muss. Nornmal würde ich Cygwin ( cut
et al) verwenden, aber das ist in diesem Fall keine Option aufgrund von (bonehead) Management-Richtlinien, die ich nicht ändern kann. Es muss mit dem in Windows enthaltenen Standard-XP-Toolset erstellt werden.
Ich muss die 10 Zeichen bei Offset 7 und 4 Zeichen bei Offset 22 (nullbasiert) extrahieren und sie in eine Datei ausgeben, aber mit einer leichten Wendung:
Zum Beispiel:
%Vor% sollte produzieren ( <
zeigt das Ende der Zeile an):
Wenn Sie mit modernen Fenstern arbeiten, sind Sie nicht auf die Befehle von cmd.exe beschränkt. Sie können vbscript verwenden. Wenn Ihre Richtlinie auch nicht vbscript verwenden soll, dann sollten Sie Ihr Management entlassen :)
%Vor%Zum "Ausschneiden" von Zeichen einer Zeichenkette verwenden Sie die Funktion Mid (). Weitere Informationen finden Sie in der VBScript-Dokumentation mehr.
Speichern Sie das obige als test.vbs und tun Sie in der Befehlszeile
%Vor%Natürlich kann "substring" auch mit reinem cmd.exe gemacht werden, aber ich werde es einigen anderen überlassen, um Sie zu führen.
Update von Pax: Basierend auf dieser Antwort habe ich folgendes gefunden, was ein guter Anfang sein wird:
%Vor%Dies entspricht allen Anforderungen, die wir hatten. Wir können die Offsets und Längen später in Kommandozeilenargumente machen.
Aktualisierung beenden.
Diese Seite enthält einige Hinweise zum Extrahieren von Teilstrings in cmd.exe: Ссылка
Diese Seite schlägt vor, dass Sie
verwenden können %Vor%um eine Variable zu indizieren. Dies scheint Ihre Bedürfnisse zu erfüllen, außer dass Sie nun jede Zeile in eine Variable bringen müssen.
Als nächstes wollen Sie sich die ghastly for
loop-Syntax und if
und die Verzweigung ansehen (Sie können :labels
im Batch aufrufen).
Dieses Zeug ist alles ziemlich hässlich, aber wenn du wirklich dorthin gehen musst ...
Hier ist eine Seite in SO, die Dateien durchläuft und ihnen etwas antut: Wie durchlaufen Sie jede Zeile in einer Textdatei mit einer Windows-Batch-Datei?
Hier ist ein kleines Skript (das in einer BAT / CMD-Datei enthalten sein muss), das sich auf das bezieht, was Daren Thomas vorgeschlagen hat:
%Vor% Die FOR-Schleife ist der zentrale Teil. Beachten Sie die Verwendung von Befehlsmodifizierern in Anführungszeichen. Ich spezifiziere tokens=11
, weil ich nur an den Unterschlüsseln von AllowedDomains
interessiert bin, was an Position 10 ist.
Lesen Sie unbedingt die Hilfe in for /?
. Daren hat Recht, wenn er sagt, dass dieses Zeug ziemlich hässlich ist. Und es bricht leicht mit Änderungen zusammen. Es gibt eine Menge nicht intuitiver Feinheiten mit cmd.exe
script syntax.
Übrigens ist die GUID die COM-Klassen-ID für das Shockwave Flash Add-on. Es ist schon seit mindestens 2001 vorhanden und könnte daher auch weiterhin relevant sein für vorhersehbare Zukunft. Der Zweck des Skripts besteht darin, die Domänen aufzulisten, in denen Flash, die ich standardmäßig blockieren möchte , erlaubt wurde.