Suche Hilfe bei kleinem Batch (?) Programm

IchUndSo

New member
Themenstarter
Registriert
11 Okt. 2006
Beiträge
117
Also liebe Leute,

es geht um Folgendes: Ich brauche ein kleines Programm, z.B. eine Batch-Datei welche mir die Aufgabe abnimmt aus einer .txt-Datei den Inhalt welcher im Format:

?Irgendein Name
Irgendeine Straße 15
55899 Irgendwo?

steht in das Format ?Irgendein Name; Irgendeine Straße 15; 55899 Irgendwo? bringt.

Wenn möglich sollte es auch noch weitere Semikolon setzen, sofern ?Datenblöcke? mit mehr Informationen, z.B. TeleNr, o.Ä. enthalten sind. Das brauche ich, damit späterhin beim Import in Excel über den Assistenten ein sauberes und korrektes/exaktes Datenblatt erstellt werden kann.

Es klingt, zumindest für mich, recht anspruchsvoll. Aber ich hoffe mal, dass mir hier trotzdem jemand helfen kann =)


Sven
 
Glaub nicht, dass das als Batch-Datei (also .bat) realisierbar ist. Wenn schon mit dem Windows Scripting Host oder so. Falls Du dir Perl installierst, kannst Du folgende Zeilen verwenden:

Code:
#!/usr/bin/perl
open FILE, "<$ARGV[0]" || die;
while(<FILE>) {
        /^\s*$/ ? do { print; } : chop && print "$_;"
}
close FILE;

Erzeugt allerdings hinter dem letzten Feld auch ein ";". Ist aber nicht schwierig zu ändern. Natürlich alles voll IP und copy protected und so. Patent pending ;-).

PS: Vor der Ausführung von Fremdcode deine Datei immer sichern ;-).
 
Wow,

das ging fix =) Danke! Ich werds gleich mal probieren.
Und alles beachten was du mir geschrieben hast ;)


Sven
 
Mist, mir fällt gerade ein das unter Windows Textdateien ihrer Zeilen anders terminieren. Einfach von das "chop" noch ein "chop". Also:

Code:
#!/usr/bin/perl
open FILE, "<$ARGV[0]" || die;
while(<FILE>) {
        /^\s*$/ ? do { print; } : chop && chop && print "$_;"
}
close FILE;

Ungetestet.
 
Also gut,

Ich habe mir grade ne Trail-Version von Perl geladen und das Programm 'geschrieben'. Es lässt sich auch kompilieren.

Nur leider kiege ich es nicht ganz gebacken mein Dokument damit zu bearbeiten ('einzubinden') :-[ Was muss ich denn da noch beachten?



Nochmal danke, Sven
 
Programm (z.B. foo.pl) und Datei (adressen.txt) auf den Desktop kopieren.
Kommandozeile öffnen (Ausführen -> cmd)
$ cd Desktop
$ perl foo.pl adressen.txt > adressen_neu.txt

So in etwa.
 
Original von IchUndSo
Ich brauche ein kleines Programm, z.B. eine Batch-Datei welche mir die Aufgabe abnimmt aus einer .txt-Datei den Inhalt welcher im Format:

?Irgendein Name
Irgendeine Straße 15
55899 Irgendwo?

steht in das Format ?Irgendein Name; Irgendeine Straße 15; 55899 Irgendwo? bringt.
Ich führe mein "Logbuch" per PHP als "TXT", PHP unterstützt EXCEL ja leider nicht. Der Name ist aber "Logbuch.xls". Durch entsprechende Feldtrennung kommt EXCEL dann damit zurecht. Ich setze zwischen den Feldern ein TAB (CHR(9)) und am Zeilenende ein CR (CHR(13)) und LF (CHR(10)).

Aber Dein Problem ist schwieriger da Du die Daten übernehmen möchtest. Es wird aber sehr schwer sein die Feldergrenzen automatisch zu bestimmen. Ein Name kann 1, 2 oder 3 Wörter sein und ebenso die Straße und der Ort. So einfach wird das leider nicht umzusetzen sein.

Aber ne Lösung hätte ich natürlich auch gern.

Gruß Flexibel
 
@threadersteller: sind dann mehrere datensätze in einer datei oder immer nur einer pro datei?

was spricht dagegen, das ganze direkt in excel einzuhämmern? (außer dass die daten jetzt im textformat vorliegen und die natürlich erstmal konvertiert werden müssen)

sprich: welcher anwendungszweck ist das ganze eigentlich?

@flexibel: wenn du dir eh schon die mühe mit php machst (was natürlich vorteile hat, da dann vermutlich die anwendung von überall aus mit daten gefüttert werden kann) warum gehst du dann den umweg über textdateien in excel und bemühst nicht einfach ne sql-datenbank (und schreibst dir die auswertung, die du vielleicht brauchst dann auch wieder in php)
 
@stb: Also das Programm an sich fuktioniert. Nur leider schneidet es den ein oder anderen Buchstaben ab. Und das bei jeder Anwendung :(

Beispiel --> Irgendein Nam;Irgendeine Straße 1;55899 Irgendw;

Woran könnte das liegen?


@atomic-virus: In einer Datei sind mehrere Datensätze. Ca. 700! Das ist auch der Grund der dagegen spricht, es einfach in Excel 'einzuhämmern' ;) Würden die Daten allerdings in der gewünschten Form vorliegen, könnte man sie einfach über die Importfunktion importieren.


Mfg, Sven
 
Original von IchUndSo
@stb: Also das Programm an sich fuktioniert. Nur leider schneidet es den ein oder anderen Buchstaben ab. Und das bei jeder Anwendung :(

Beispiel --> Irgendein Nam;Irgendeine Straße 1;55899 Irgendw;

Woran könnte das liegen?

Das kann ich dir sagen. Unter Windows und Unix werden Zeilen anders beendet. D.h., es werden andere Zeichen am Zeilenende angefügt um zum Beispiel einem Editor mitzuteilen, wann er die Zeilen umbrechen soll. Windows: Zwei Zeichen, Unix: Ein Zeichen.

* Das erste Programm arbeitet mit Unix-Textdateien korrekt (Ein Zeichen).
* Das zweite mit Windows-Textdateien (Zwei Zeichen).

Versuch es also einfach nochmal mit dem ersten Programm, dass muss gehen. Wahrscheinlich liegt die Datei in Unix-Form vor. Bei mir funktioniert es ja auch.
 
WoW!

Es funktioniert, respekt! Du hast mir jede menge Arbeit erspart :D

Noch einmal ein roßes DANKESCHÖN!


Mfg, Sven
 
Kein Ding.

30 Sekunden * 100 Euro/h = 0,833 Euro. Macht beim nächsten Mal ein billiges Pils :-D.
 
  • ok1.de
  • thinkstore24.de
  • ok2.de - Notebook Computer Server
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben