PageBreak in Text File

Gast #653954
Lesenswert?

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??
Persönliche Seite #654090
Lesenswert?

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.
Gast #654123
Lesenswert?

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.
#654129
Lesenswert?

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
Persönliche Seite #654180
Lesenswert?

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.
Gast #657972
Lesenswert?

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
Gast #658198
Lesenswert?

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....
Gast #658704
Lesenswert?

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
)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren