Zeichen zählen, um Zeilenläge zu begrenzen

Mitglied: newline

newline (Level 1) - Jetzt verbinden

22.04.2021 um 08:58 Uhr, 758 Aufrufe, 14 Kommentare

Guten Morgen,

in diesem Forum finden sich so coole Scripts, es ist unfassbar klasse!

Mit einem sehr gut funktionierenden Script (aus der guten alten Zeit) gibt es aber das Problem, dass nur Semikl. gefunden werden und keine Gesamtzeichenanzahl ausgegeben wird.

Problem:
Ich muss htm-Dateien überprüfen. Dabei soll in keiner Datei die Zeichenlänge einer Zeile von x überschritten werden (incl. Leerzeichen).
Die Ausgabe würde mir reichen, indem die Zeilen einfach aufgelistet würde (so wie im alten Script).
Fragen:
Wie lässt sich der Code anpassen?
Gibt es ansonsten eine einfache Alternative? Wie sieht die aus?


Gruß newline
Mitglied: Doskias
LÖSUNG 22.04.2021, aktualisiert um 09:40 Uhr
Moin,

ich würde dir zu Powershell raten. Da du offenbar nicht ganz so bewandert darin bist, hier ein für Anfänger verständlicher Code, der theoretisch noch kürzer sein könnte, allerdings habe ich dann Angst, dass du ihn nicht verstehst. Daher einmal für dich Schrittweise:

Gruß
Doskias
Bitte warten ..
Mitglied: newline
22.04.2021 um 10:15 Uhr
Hey Doskias,

klasse!!!
Du hast natürlich recht, dass ich nicht so bewandert bin - andernfalls wäre ich nicht hier ... 😎.

Deine ausführlich Darstellung ist richtig nett von dir, zumal ich eigene Anpassungen vornehmen kann und ihn vermutlich auch in 6 Wochen noch verstehe!

Einziges Problem war eine fehlende Ausgabe, wenn ich die Datei einfach starte (vermutlich müsste sie auf der Console gestartet werden).
Da ich weitere Aufgaben anschließe, lasse ich sie einfach aus einer Batch heraus starten:

Ergebnis spitze, Danke Doskias 😉
Bitte warten ..
Mitglied: Doskias
22.04.2021 um 10:29 Uhr
Zitat von @newline:
Hey Doskias,
klasse!!!
Du hast natürlich recht, dass ich nicht so bewandert bin - andernfalls wäre ich nicht hier ... 😎.
Stimmt nicht. Hier treiben sich viele Leute herum, die bewandert sind. Auch Leute mit Erfahrung können nicht alles wissen und dürfen Fragen stellen.

Deine ausführlich Darstellung ist richtig nett von dir, zumal ich eigene Anpassungen vornehmen kann und ihn vermutlich auch in 6 Wochen noch verstehe!
Und vielleicht bis dahin auch noch ein wenig in Powershell eingearbeitet hast ? :-) face-smile

Einziges Problem war eine fehlende Ausgabe, wenn ich die Datei einfach starte (vermutlich müsste sie auf der Console gestartet werden).
Da ich weitere Aufgaben anschließe, lasse ich sie einfach aus einer Batch heraus starten:

Ich persönlich bin keine Freund von einer Abfolge von Aufgaben via Batch zu starten. Als Faustregel kannst du dir einfach merken, dass die PS-Konsole alles kann, was die CMD kann und noch weit mehr. die Powershell ISE die du auch finden solltest beitet darüber hinaus komfortablere Möglichkeiten zur Skripterstellung als die CMD. Zum Beispiel das Ausführen eines markierten Teiles des Codes, was sich hervorragend zum Testen einzelner Abschnitte eignet.

Du könntest die Ausgabe auch in eine Datei umleiten, was je nach länge der Dateien die Auswertung vereinfacht (oder du schickst die Datei dann einfach jemanden zum weiterbearbeiten).

Ergebnis spitze, Danke Doskias 😉
Gerne
Bitte warten ..
Mitglied: warranty
22.04.2021, aktualisiert um 11:00 Uhr
Und falls du dann mal mit Powershell etwas weiter bist hier noch ergänzend eine kurze Variante
Das .{$($max+1),} bedeutet in Regex Syntax selektiere alle Zeilen die $max + 1 beliebige Zeichen oder mehr besitzen. Ausgegeben werden dann nur die Zeilennummern der gefundenen Zeilen.
Etwas zu Lesen darüber Quantifizierer in regulären Ausdrücken

Gruß w.
Bitte warten ..
Mitglied: newline
22.04.2021 um 11:03 Uhr
Da hast du schon wieder recht ...
Wobei mein Problem war, dass nach "Mit Powershell ausführen" nix passierte 😢 und ich mir dann einfach selber helfen wollte - um nicht eine Anschlussfrage stellen zu müssen. So bekam ich zumindest die Ausgabe im CMD präsentiert, wobei mir vollkommen klar ist, dass es weitaus komfortabler gehen muss - nur wie, bleibt mir vorerst verborgen.

Da ich eher mit kleinere Aufgaben betraut bin ist PS natürlich eine riesige Herausforderung, wobei ich vieles schon damit versuche zu erledigen.
Btw., mir ist vollkommen unklar, wie sich verschiedene Codeblöcke miteinander kombinieren lassen - das war in Batch irgendwie so schön einfach 😂. ABER das ist selbstverständlich eine umfassende Frage für einen anderen Thread!!!
Hast du trotzdem ein Tipp, wo man zur Verknüpfung von Codeblöcken weitere Infos/Tuts/Beispiele finden kann? Die MS-Seite bietet zwar megaviele Infos, aber für Einsteiger - finde ich - fehlt es an einfachen Beispielen. Also im Sinne, wie schreibe ich ein kleines Programm mit mehreren Ablaufschritten. Oder sind es dann mehrere Dateien/Scripte, die quasi am Anfang aufgerufen werden können?
Also, falls du noch einen Tipp hast: FREUDE, FREUDE falls nicht: DANKE, DANKE noch einmal für deine Mühe!!!
Bitte warten ..
Mitglied: Doskias
22.04.2021 um 11:14 Uhr
Du "brauchst" so gesehen in PS keine Codeblöcke. Beispiel


macht halt nur ein Update der Gruppenrichtlinie

Zeigt dir einfach das aktuelle Datum mit der aktuellen Uhrzeit an


würde demnach erst die Uhrzeit hinschreiben, danach das gpupdate machen. Das Skript wird einfach von oben nach unten abgearbeitet. Wenn du in Zeile 4 eine Variable deklarierst und Sie bis Zeile 4000 unangetastet lässt, macht er halt was dazwischen steht und nimmt dann ab Zeile 4.000 die Variable.
Jeder Befehl macht das was er soll und das sind die Befehle die MS erklärt werden. Sie zu kombinieren und sinnvoll zu nutzen, das ist dann dein Job ;)
Bitte warten ..
Mitglied: Doskias
22.04.2021 um 11:18 Uhr
Also dann mach es doch gleich als Einzeiler und Pack das Max auch nach unten :-) face-smile


Aber genau das meinte ich im ersten Posting mit theoretisch noch kürzer aber als Anfänger nicht so verständlich und nur die Zeilen Ausgeben ist zwar das Ergebnis schöner ist es aber mit einem kleinen Text 8finde ich persönlich)
Bitte warten ..
Mitglied: warranty
22.04.2021, aktualisiert um 11:28 Uhr
Zitat von @Doskias:

Also dann mach es doch gleich als Einzeiler und Pack das Max auch nach unten :-) face-smile
Ja klar ... Korinthen kacken :-D face-big-smile .... Sollte für den TO dann doch noch "minimale" Hilfe darstellen :-) face-smile.

Der zeigt dann aber nur Zeilen die mind. 1000 Zeichen haben MAX + 1 wäre hier nötig wenn 1000 noch erlaubt sind ;-) face-wink
Aber genau das meinte ich im ersten Posting mit theoretisch noch kürzer aber als Anfänger nicht so verständlich und
War ja nur ne Ergänzung des Threads ...

Zurück Kortinthe gekackt :-D face-big-smile

Gruß w.
Bitte warten ..
Mitglied: Lochkartenstanzer
22.04.2021 um 12:06 Uhr
Moin,

Die mit awk/gawk geht es recht einfach :


z.B.


lks
Bitte warten ..
Mitglied: newline
22.04.2021 um 12:33 Uhr
Ihr seid herrlich!
Den Einzeiler finde ich übrigens klasse!!!
Gut ihn anzupassen finde ich ebenso, allerdings habe ich bei solchen kurzen immer Angst, bei der nächsten Aufgabe an vielen Stellen nicht weiter zu kommen ... kann ich ja das Forum nutzen 😂.
Im Ernst, der Einzeiler ist mir irgendwie sehr klar, wobei meine Probleme noch auf der Ebene sind, nicht zu wissen, welche Befehle ich benötige um was zu tun. (also aus && wird nun | )
Ein Beispiel:
Wenn ich einen Block abgearbeitet habe, wie ich dann die Ausgabe die Ausgabe "konserviere" bzw. in Variablen schreiben soll bzw. mit einer Variablen weiterarbeiten soll.
Da fehlen mir irgendwie Beispiele ... 😎

Hätte gerne auch eine Korinthe gek ... 😊😊😊
Bitte warten ..
Mitglied: newline
22.04.2021 um 12:36 Uhr
Zitat von @Lochkartenstanzer:

Moin,

Die mit awk/gawk geht es recht einfach :


z.B.


lks

Wobei hier wieder die Boardmittel-Problematik aufploppt ...
Bitte warten ..
Mitglied: colinardo
22.04.2021, aktualisiert um 12:49 Uhr
Servus @newline,
Zitat von @newline:
Im Ernst, der Einzeiler ist mir irgendwie sehr klar, wobei meine Probleme noch auf der Ebene sind, nicht zu wissen, welche Befehle ich benötige um was zu tun. (also aus && wird nun | )
Nein das sind zwei paar Schuhe, das eine ist das Ausführen eines Folgebefehls wenn der vorangegangene ohne Fehler abgeschlossen wurde, das andere ist das Übergeben von Werten/Objekten über die sogenannte Powershell-"Pipeline" an folgende Befehle/CMDLets.
Ein Beispiel:
Wenn ich einen Block abgearbeitet habe, wie ich dann die Ausgabe die Ausgabe "konserviere" bzw. in Variablen schreiben soll bzw. mit einer Variablen weiterarbeiten soll.
Da fehlen mir irgendwie Beispiele ... 😎
Am besten du fängst bei 0 an, das ist auf lange Sicht gesehen nachhaltiger :-) face-smile.

Da ziehe ich gerne immer meine Linkliste für den PS Anfänger aus dem Hut:

Powershell Leitfaden für Anfänger

Pflichtlektüre
Erweiterte Grundlagen
Zusätzliche Ressourcen

Danach bist du angehender Profi.

Viel Erfolg!

Grüße Uwe
Bitte warten ..
Mitglied: Lochkartenstanzer
22.04.2021, aktualisiert um 12:55 Uhr
Zitat von @newline:

Wobei hier wieder die Boardmittel-Problematik aufploppt ...

Erstellst und bearbeitest Du HTML-Dateien mit Bordmitteln? Notepad?

Oder reparierst Du Dein Auto mit Bordwerkzeug?

lks

PS: Nichts gegen Notepad, ist ein wunderbares Werkzeug, aber nicht für alles geeignet.
Bitte warten ..
Mitglied: newline
22.04.2021 um 14:04 Uhr
Uwe, eine solche Liste habe ich gemeint - und gesucht - DANKESCHÖN!

@ Lochkartenstanzer: Du hast so recht! Meine Anmerkung bezog sich auch eher auf das Problem, wenn man anderen "das Programm" mitgeben möchte - vor allem solchen, die noch weniger Ahnung haben 🤣
Btw: Mein Opa hat damals bei IBM ein Patent auf die schnellere Verarbeitung von Lochkarten registriert! Schön, solche Spuren auch heute noch zu finden 😊 manche können sich darunter nix mehr vorstellen ...
Bitte warten ..
Heiß diskutierte Inhalte
Hyper-V
Spricht was gegen die Virtualisierung mit Hyper-V?
bauinformatikerVor 1 TagFrageHyper-V32 Kommentare

Seit 10 Jahren betreiben mein Kollege und ich 2 Hosts mit ESXi. Nun sollen die neu beschafft und neu installiert werden. Bis auf einen ...

Grafikkarten & Monitore
Großeinkauf für Ultrawide Monitore - USB-C - RJ45 - Dockingstation Ersatz
GoldfuchsVor 2 TagenFrageGrafikkarten & Monitore12 Kommentare

Grüße an die Community lang nicht mehr gehört ;) Ich bin auf der Suche nach Ultrawide Monitoren mit einer Mindestgröße von 34" und Maximalgröße ...

Off Topic
Vom IT-Systemelektroniker zurück zur "IT"
xsheynVor 1 TagFrageOff Topic8 Kommentare

Schönen guten Abend, vor einigen Wochen hatte ich schonmal einen Thread erstellt, dass ich IT-Systemelektroniker bin aber kaum Erfahrung in der "Typischen IT" habe. ...

Entwicklung
Plattformübergreifende Programmierung mit Visual Studio
gelöst nagitaVor 1 TagAllgemeinEntwicklung11 Kommentare

Hallo ich habe mir vor einiger Zeit die aktuellste Version von Visual Studio installiert und bin eigentlich auch recht zufrieden damit. Ich habe vor, ...

Datenbanken
Liste als PDF ausdrucken
jensgebkenVor 1 TagFrageDatenbanken6 Kommentare

Hallo Gemeinschaft, Ich habe eine Access Datenbank und darin eine Abfrage in der Kunden Adressen und Kosten angezeigt werden pro Kunde. Nun möchte ich, ...

Exchange Server
Postfach für öffentliche Ordner ist voll
gelöst Tommy525600Vor 21 StundenFrageExchange Server6 Kommentare

Hallo an alle, ich habe folgendes Problem: Mein primäres Postfach für öffentliche Ordner ist voll (99,58 GB) (und ja, ich kann auch nix dafür). ...

Video & Streaming
Netzwerkspeicher IPTV
uridium69Vor 1 TagFrageVideo & Streaming6 Kommentare

Hallo Ich möchte gerne meine beiden Android IPTV Receiver das NAS als Netzwerkspeicher und als Aufnahmemedium hinzufügen, ich habe unter den Optionen "Netzwerkspeicher hinzufügen" ...

Outlook & Mail
Outlook export to PST schlägt fehl - Alternativen?
gelöst StefanKittelVor 1 TagFrageOutlook & Mail3 Kommentare

Hallo, ich versuche gerade ca. 20 Postfächer von einem Hosted Exchange-Anbieter in PST-Dateien zu sichern/archivieren. Bei 3 Postfächer schläft dies mit "unbekannter Fehler" fehl. ...