Per Batch Texteile entfernen und verschieben, Sonderzeichen und Zeilenumbrüche löschen
Hallo,
ich habe mal wieder ein Problem mit unseren Archivierten Firmendateien. Dank eurer Hilfe konnte ich die "Neuzeit" schon ziemlich Fix abarbeiten. Die 1980er und 1990er Jahre bereiten mir aber immernoch arges Kopfzerbrechen. Hier wurde damals auf Commodore gearbeitet und der damalige "Administrator" hatte ein BBS eingerichtet. Mangels Kenntnis und geeigneter Hardware habe ich auf das BBS selbst leider keinen Zugriff. Nach intensiver Recherche konnte ich jetzt jedoch mittels eines Amiga Emulators (Ja, Tatsache) die .DIZ Dateien der Archive in eine Liste schreiben.
Diese gilt es nun in ein Schema zu bringen:
Unser "Administrator" hat sich nun leider bei der Dateienbeschreibung mit wahren Ascii Kunstwerken verwirklicht, was es mir keineswegs einfacher macht.
Hier ist mein Beispiels-Output:
Das ganze muss am Schluß dann so aussehen:
Ihr seht, keine leichte Aufgabe. Meine Überlegungen gehen in folgende Richtung:
- Löschen einzelner Textbausteine ("Filetype:" und "Size:" + jeweils 15 Folgezeichen)
- Verschieben einzelner Textbausteine in je ein Temporäres Dokument (Date: + 15
Folgezeichen und [xxxx] + 15 Folgezeichen mit anschließender Löschung von [xxxx])
- Entfernen aller Sonderzeichen und Zeilenumbrüche in der Beschreibung
- Zusammenfügen der einzelnen Bausteine
Wie und ob das ganze überhaupt zu verwirklichen ist, ist mir allerdings ein Rätsel. Sollte das ganze via Batch nicht zu verwirklichen sein, wäre ich wirklich über jeden weiteren (auch Teil-) Lösungsvorschlag dankbar! Sei es VB, Shell, spezielle Editoren, Office Programme, Shareware etc..
Viele Grüße und schonmal vielen Dank fürs anschauen
Euer Robert
ich habe mal wieder ein Problem mit unseren Archivierten Firmendateien. Dank eurer Hilfe konnte ich die "Neuzeit" schon ziemlich Fix abarbeiten. Die 1980er und 1990er Jahre bereiten mir aber immernoch arges Kopfzerbrechen. Hier wurde damals auf Commodore gearbeitet und der damalige "Administrator" hatte ein BBS eingerichtet. Mangels Kenntnis und geeigneter Hardware habe ich auf das BBS selbst leider keinen Zugriff. Nach intensiver Recherche konnte ich jetzt jedoch mittels eines Amiga Emulators (Ja, Tatsache) die .DIZ Dateien der Archive in eine Liste schreiben.
Diese gilt es nun in ein Schema zu bringen:
Unser "Administrator" hat sich nun leider bei der Dateienbeschreibung mit wahren Ascii Kunstwerken verwirklicht, was es mir keineswegs einfacher macht.
Hier ist mein Beispiels-Output:
[0036] mu-arbp5.TXT
Filetype: ASCII _________ ____ _ ___ __
Size: 47390 _______
Date: 22-Aug-1995 .\--» ___/ .\ ___/______ _/___/__\/\/__/
¦ :
¦ Arbeitsprojekt Mustermann 5.0 .
: ¦
`----------------------------[ ]-'
[0037] blamap.zip ,__ ______ ______
Filetype: ZIP ___\ ____)|__ __ __, ____ ____) ____
Size: 70003 | |
Date: 04-Sep-1991 .-----------\----------------\------------\.
| |
·------------------------------------------·
| Mappe Blablabla |
| noch mehr Blablabla |
| usw... |
| |
`------------------------------------------'
____
/\___\ ___ __ _
\/___/ /__ _
Das ganze muss am Schluß dann so aussehen:
mu-arbp5.TXT [TAB] 22-Aug-1995 [TAB] Arbeitsprojekt Mustermann 5.0
bla-map.zip [TAB] 04-Sep-1991 [TAB] Mappe Blablabla # noch mehr Blablabla # usw...
Ihr seht, keine leichte Aufgabe. Meine Überlegungen gehen in folgende Richtung:
- Löschen einzelner Textbausteine ("Filetype:" und "Size:" + jeweils 15 Folgezeichen)
- Verschieben einzelner Textbausteine in je ein Temporäres Dokument (Date: + 15
Folgezeichen und [xxxx] + 15 Folgezeichen mit anschließender Löschung von [xxxx])
- Entfernen aller Sonderzeichen und Zeilenumbrüche in der Beschreibung
- Zusammenfügen der einzelnen Bausteine
Wie und ob das ganze überhaupt zu verwirklichen ist, ist mir allerdings ein Rätsel. Sollte das ganze via Batch nicht zu verwirklichen sein, wäre ich wirklich über jeden weiteren (auch Teil-) Lösungsvorschlag dankbar! Sei es VB, Shell, spezielle Editoren, Office Programme, Shareware etc..
Viele Grüße und schonmal vielen Dank fürs anschauen
Euer Robert
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 204725
Url: https://administrator.de/forum/per-batch-texteile-entfernen-und-verschieben-sonderzeichen-und-zeilenumbrueche-loeschen-204725.html
Ausgedruckt am: 11.01.2025 um 03:01 Uhr
9 Kommentare
Neuester Kommentar
Hallo
AusgabeIch habe das Zeichen vor "Arbeitsprojekt" nicht in den Griff bekommen .
Das Ergebnis wäre dann eine CSV-Datei die Du problemlos mit Excel weiter verarbeiten könntest.
Außerdem habe ich die Textzeilen einfach aneinander gehängt. Das lässt sich leicht ändern.
Wenn Du keinen Linuxrechner hast, dann installier Dir Strawberry-Perl
Und wenn Du gar nicht zurechtkommst, dann schick mir eine PN mit einem Angebot, ich kann Dir das auch umwandeln.
Markus
#!/usr/bin/perl
use strict ;
use warnings ;
use feature 'say' ;
open DATEI, "projekte.txt" ;
undef $/ ;
my $file = <DATEI> ;
my @records = split /\[\d\d\d\d\]/, $file ;
close DATEI ;
my ( $rec, $i ) ;
foreach $rec ( @records ) {
my ( $name, $date, $text ) ;
next if $rec eq "" ;
my @lines = split /\n/, $rec ;
foreach ( @lines ) {
s/^\s+[^a-zA-Z0-9 ]// ;
s/\s+[^a-zA-Z0-9]+$// ;
s/^[^a-zA-Z0-9]*$// ;
s/^\s+// ;
if ( $_ =~ m/Date: ([-0-9A-Za-z]+)/ ) {
$date = $1 ;
}
}
$name = $lines ;
for ( $i=4; $i<@lines; $i++ ) {
$text .= $lines[$i] if $lines[$i] !~ /^\s?$/ ;
}
say "$name;$date;$text" ;
}
mu-arbp5.TXT;22-Aug-1995;� Arbeitsprojekt Mustermann 5.0
blamap.zip;04-Sep-1991;Mappe Blablablanoch mehr Blablablausw..
Das Ergebnis wäre dann eine CSV-Datei die Du problemlos mit Excel weiter verarbeiten könntest.
Außerdem habe ich die Textzeilen einfach aneinander gehängt. Das lässt sich leicht ändern.
Wenn Du keinen Linuxrechner hast, dann installier Dir Strawberry-Perl
Und wenn Du gar nicht zurechtkommst, dann schick mir eine PN mit einem Angebot, ich kann Dir das auch umwandeln.
Markus
Also projekte.txt wäre der Dateiname der zu öffnenden Datei (wo Deine Daten drin sind). "Datei" ist das sog. Filehandle, mit dem spricht man die geöffnete Datei im Programm an, das musst Du nicht ändern. ersetze projekte.txt Durch den Dateinamen (evtl. auch Pfad), den diese Datei bei Dir hat.
Dann öffnet das Skript diese Datei und wenn weitere Fehlermeldungen kommen, poste diese bitte.
Ach ja, wenn es mehrere Dateien sind, dann kann man das natürlich so abändern, dass die auf der Kommandozeile übergeben werden. Auch das Schreiben der Ausgabe in eine Datei kann man "nachrüsten".
Markus
open DATEI, "projekte.txt" ;
Dann öffnet das Skript diese Datei und wenn weitere Fehlermeldungen kommen, poste diese bitte.
Ach ja, wenn es mehrere Dateien sind, dann kann man das natürlich so abändern, dass die auf der Kommandozeile übergeben werden. Auch das Schreiben der Ausgabe in eine Datei kann man "nachrüsten".
Markus
Wenn man davon ausgeht, dass jede "gewünschte" Zeile mit einem Buchstaben oder einer Zahl anfängt, dann kann man hinter Zeile 23 einfügenDas löscht alle Zeichen am Beginn jeder Zeile, die nicht Buchstabe oder Zahl sind.
Reicht das?
Markus
s/^[^A-Za-z0-9]+// ;
Reicht das?
Markus
Hinter Zeile 15 füge mal ein. Damit werden alle Zeilen gelöscht, in denen nicht mindestens zwei alphanumerische Zeichen hinter einander vorkommen.
Kürzer ginge auch
Markus
if ( $_ !~ m/[a-zA-Z0-9][a-zA-Z0-9]+/ ) {
$_ = "" ;
}
Kürzer ginge auch
if ( $_ !~ m/\w\w+/ ) {
....
Markus
So, hier noch eine Lösung bei der zumindest für Dein gepostetes Beispiel keine überschüssigen Zeichen bleiben.AusgabeEs ist sehr vereinfacht gegenüber obigem Skript. Ich hab einfach überall # eingefügt. Du kannst das Problemlos in Excel laden, mit # als Trenner zwischen den Spalten und dann einfach alle Spalten ab der dritten verbinden.
Zu Deinem anderen Thread: nein, ich würde es nicht mit VBS machen hier sind Reguläre Ausdrücke das Mittel der Wahl. Und solche Aufgaben sind es, für die Larry Wall einst Perl erfunden hat.
Markus
#!/usr/bin/perl
use strict ;
use warnings ;
open DATEI, "projekte.txt" ;
while ( <DATEI> ) {
s/\s[^a-zA-Z0-9]+(\n)/$1/g ;
s/\|/ /g ;
s/¦//g ;
s/Filetype.*$// ;
s/Size.*$// ;
s/Date:\s// ;
s/^\s+//g ;
s/^$//g ;
s/\n/ # / ;
s/\[\d+[^]]\]\s/\n/ ;
print $_ ;
}
print "\n" ;
mu-arbp5.TXT # 22-Aug-1995 # Arbeitsprojekt Mustermann 5.0 #
blamap.zip # 04-Sep-1991 # Mappe Blablabla # noch mehr Blablabla # usw... #
Zu Deinem anderen Thread: nein, ich würde es nicht mit VBS machen hier sind Reguläre Ausdrücke das Mittel der Wahl. Und solche Aufgaben sind es, für die Larry Wall einst Perl erfunden hat.
Markus