Ist es moeglich einen PageBreak in eine Text file einzubauen?? ich habe schon eine weile gesucht und nichts gefunden. ausser einem linebreak mittels /r/n oder misterieosen befehlen wie print #9, chr(12) oder einem angeblichen ascii 12 befehl habe ich nichts gefunden. ich muesste es mittels einer Batch in eine txt file pipen.... hat einer von euch schon mal was von dem printerbefehl \u000C gehoert??
Das "angebliche ascii 12" ist dasselbe wie der "Printerbefehl" - das ist ein Form-Feed. Er wird von einigen Textterminals und eben Druckern ausgewertet, aber in Textdateien ist er nicht üblich. Es gibt keine standardisierte Codierung für Seitenumbruch in reinen Textdateien; manche Textanzeiger oder Editoren mögen FormFeed auswerten, aber üblich ist das nicht.
wie kriege ich dann etwas in mein txt file rein (per batch file / pipe) damit ich am ende beim drucken seitenumbrueche habe? danke im voraus!
Texteditoren arbeiten normalerweise nicht seitenorientiert, deswegen wird der Form-Feed (= chr(12) = ASCII 12 = \u000C = Strg-L = Ctrl-L = ^L = '\x0c' = '0014" = '\f') dort nicht ausgewertet, sondern allenfalls als ^L angezeigt. Man findet diesen Code manchmal in älterem Quellcode bspw. vor jedem Unterprogramm. Damit wird erreicht, dass jedes Unterprogramm auf einer neuen Seite ausgedruckt wird. In vielen Programmiersprachen wird ^L als Leerraum (White Space, wie Leerzeichen, Zeilenvorschub und Tabulator) behandelt (bspw. in C und Python), so dass es keinen Einfluss auf die Funktionsweise des Programms selber hat. Textverarbeitungsprogramme, die im Gegensatz zu reinen Texteditoren seitenorientiert arbeiten, ersetzen i.Allg. einen Form-Feed in einer importierten Textdatei durch einen Seitenumbruch (so z.B. Open Office). Wie der Form-Feed in eine Textdatei eingefügt wird, hängt vom verwendeten Editor ab. Bei Vim geht das mit Strg-V Strg-L, bei Nano mit Esc V Strg-L. Wie das in deinem Editor geht, wenn überhaupt, sagt dir sicher die zugehörige Gebrauchsanleitung.
Nun, wenn Dein Drucker FormFeeds unterstützt, dann musst Du in der Tat FormFeeds ausgeben. Ein FormFeed ist Ctrl+L; eine Textdatei, die nur FormFeed enthält, erhältst Du durch Eingabe von copy con ff.txt [RETURN] [Ctrl+L][Ctrl+Z] Das Ergebnis einer solchen Aktion siehst Du im Anhang.
Martin wrote: > wie kriege ich dann etwas in mein txt file rein (per batch file / pipe) > damit ich am ende beim drucken seitenumbrueche habe? > > danke im voraus! Du kannst dir zb. eine Datei vorbereiten in der nur dieses eine Zeichen drinnen ist. Dieses File wird dann zwischendurch auf den Drucker ausgegeben um den FormFeed zu erreichen. Wie du das File erstellst: * Texteditor. Unter DOS gabs immer die Möglichkeit mittels AltGr und dem Zeichencode an der Zehnertastatur ein beliebiges Zeichen einzugeben. Wenn das mit deinem Texteditor noch geht: Bingo * Wenn du mit dem Texteditor nicht weiter kommst: Text File anlegen mit 1 Zeichen drinn, zb. A Dann besorgst du dir einen Hex Editor, machst das File auf und tauscht das A gegen einen FormFeed aus
krass, cool danke. das hoert sich echt nicht schlecht an. ich werde das mal ausprobieren :)
Die Eingabemethode mit der Alt-Taste und dem Zehnerblock existiert auch unter Windows noch (Alt, nicht AltGr!). Zwischen ANSI (CP1252) und "DOS" CP437/850 wird durch voranstellen einer 0 unterschieden: Beispiel: Alt + 148 ö ("DOS") Alt + 0148 ø (ANSI) Bei Zeichencodes kleiner als 128 ist eine solche Unterscheidung natürlich nicht nötig. Zeichencodes kleiner als 32 können auch mit Ctrl + einer Buchstabentaste eingegeben werden, vom ASCII-Code des Großbuchstabens wird (dezimal) 64 abgezogen. Ctrl + A ist demnach dasselbe wie Alt + 1 Jedoch werten diverse Editoren solche Steuerzeichen auch selber aus und tragen diese nicht in die zu erzeugende Textdatei ein. Hundertprozentige Sicherheit gewährt hier nur ein Hexeditor. Wie man aber den Steuercode für FormFeed (0x0C) in eine Datei bekommt, habe ich bereits weiter oben beschrieben und auch eine ein solches Zeichen enthaltene Datei angehängt. So etwas hat natürlich nur mit Primitivdruckern einen Sinn, die unter Umgehung des betriebssystemeigenen Druckertreibers DIREKT angesteuert werden, so, wie man es mit Nadelratzen und ähnlichem in der vorderen Altsteinzeit mal tat.
Nochmal danke fuer die hilfe, hat uebrigens wunderbar geklappt. ich musste nur die ff.txt etwas erweitern, denn entweder wollte winword die seitenumbrueche nicht richtig fressen oder meine zuweisung und pipe haben das eine 0c hex zeichen nicht erkannt. so habe ich ein weiteres 0c sowie ein a0 (fuer leerzeichen) eingefuegt, damit folgendes funktioniert: set /P umbruch=<c:\temp\ff.txt for /f "tokens=1,*" %%g in (text.txt) do (echo %%g %%h >> NEU.txt IF %%g==keyword (echo %umbruch% >> NEU.txt) jetzt haette ich noch zwei andere kurze fragen: 1. beim umleiten (echo >>) des textes aus text.txt in NEU.txt zerschiesst es mir die tabulator formatierung. gibt es eine methode in batch dies zu verhindern?? 2. will ich beim umleiten einen abschnitten ins nirvana umleiten, kriege es aber irgendwie nicht gebacken das in meine forschleife einzubasteln. springt batch denn wirklich immer zurueck in die laufende forschleife, wenn sie noch nicht abgearbeitet ist? koennte ich also ein call zu einer unterprozedur machen und dieser sagen: OK jetzt beginnt ein teil den du weiter auslesen sollst, aber nicht in die NEU.txt reinschreiben sollst? um dann wieder zurueckzuspringen, wenn ein neues abschnitt beginnt der in die datei rein soll? gruss martin
Hi Wenn meine Dos-Kenntnisse nicht ganz verblichen sind: Um etwas ins Nirwana zu schicken gibt es ein Nulldevice. Wird, so weit ich mich noch mit '>>nil' angesprochen. MfG Spess
das umleiten ist ja nicht das problem :) das geht mit echo %%g > nul mein problem ist ja, in der for schleife die meine text.txt ausliest (parst) einen gewissen abschnitten (markiert mit einem keywort) rauszuschneiden, aber dann bei einem zweiten keywort, wieder zurueck zum eigentlichen auslesen zurueckzukehren....
Sorry, batch-Programmierung ist seeehr lange her irgendwie so ähnlich? DATEI="blafasel.txt" for ... do ( if %%g==keyword1 (DATEI="nul") if %%g==keyword2 (DATEI="blafasel.txt") echo %%g >> $DATEI )
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.