Zeilenändernde bat Datei gesucht

  • Mein Bedürfnis dürfte schnell zu schildern sein.

    Ich bringe es nicht zustande eine .bat Datei zu erstellen, die eine Datei, welche mittels Parameter angegeben wird, zeilenweise editiert.

    datei.txt sähe so aus:

    Code
    datei01datei02datei mit leerzeichendatei04

    und meine Wunschdatei anschließend so:

    Code
    STRINGdatei01STRING2STRINGdatei02tSTRING2STRINGdatei mit leerzeichenSTRING2STRINGdatei04STRING2


    ________

    Der Überhammer (bin mir aber sicher dass es nicht geht, weil das viel zu einfach wäre) wäre wenn sich das in einen Befehl einbinden ließe:
    dir /b > datei.txt
    Wobei STRING und STRING2 gleich vor bzw. nach den Text eingefügt wird.

    Pseudo-Pseudo Code als Mischung aus PHP und BAT sähe dann so aus:

    Code
    "STRING" + dir /b + "STRING2" > datei.txt

    Wäre natürlich schon zufrieden wenn jemand zu Nr.1 eine Lösung hätte.
    Bitte um Vorschläge (oder RTFM Vorschläge mit Links), danke!

  • Wenn ich das richtig sehe, müßte das klappen mit: (Pseudocode, da ich keine Win-Box hier hab und die Syntax von der "for" Schleife grundsätzlich erstmal falsch mache)

    Code
    dir /b >temp.tmpset STRING=...set STRING2=...del Ergebnisdatei.txtfor %%x in (temp.tmp) (  echo %STRING%%%x%STRING2% >> Ergebnisdatei.txt)del temp.tmp


    Ja, die for-Schleife ist so sicher falsch, aber ist das im Prinzip das was Du suchst?

    P.S.: help for liefert einige Beispiele...


    [edit:]
    Aber wenn ich mich hier grade mit dran hängen dürfte:
    Ich suche so ne Art sed für Windows, genaugenommen nur den s-Befehl von Linux-sed: Ich bräuchte ein Tool, das ich von einem Batch ausrufe und das mir aus einer Textdatei jedes vorkommen von einem bestimmten String in einen anderen String übersetzt. Die beiden Strings würde ich gerne in der Kommandozeile mit eingeben, also etwa sowas:

    Code
    Win-sed Datei.txt String1 String2


    sollte jedes Autauchen von String1 durch String2 ersetzen - hab das bisher durch ne Batch-Datei gemacht, die ne Batch-Datei mit %Variable:~...=...% baut und aufruft - ist aber extrem mühsam und klappt nicht mit richtig langen Zeilen in der Textdatei!

    Grüße!
    Trekkie2

  • Fast richtig, die Idee; aber durch das Suchen in der Windows-Hilfe nach "for" (zumindest bei Windows 2000 steht's noch drin) wäre der dazu nötige Parameter "/F", der das Lesen aus Dateien veranlasst, schnell zu finden gewesen. ;)

    Wenn es tatsächlich nur um das Manipulieren der Liste von Dateien in einem Vezeichnis geht, klappt das in einer Zeile direkt am Prompt:

    Code
    for %a in (*.*) do @echo STRING1%aSTRING2


    Braucht man dagegen den Inhalt einer Textdatei, die anders hergestellt wurde, entsprechend in einer Zeile:

    Code
    for /F %a in (liste.txt) do @echo STRING1%aSTRING2


    Man muss nur beachten, dass man nicht genau die selbe Datei überschreiben darf, aus der gelesen wird. Man muss also die Ausgabe in eine zweite Datei umlenken, und dann evtl. zirkulär umbenennen.

  • Zitat von LigH

    Fast richtig, die Idee; aber durch das Suchen in der Windows-Hilfe nach "for" (zumindest bei Windows 2000 steht's noch drin) wäre der dazu nötige Parameter "/F", der das Lesen aus Dateien veranlasst, schnell zu finden gewesen. ;)


    Hihi - hatte ja schon geschrieben, daß ich weder "mal eben" nachschauen kann, da ich im Büro kein Win habe, noch mir die Syntax des for-Befehls merken kann - da ich heute grade mal wieder Linux-Skripte zusammengebacken habe, würde da auch nur ein Kuddelmuddel aus beidem rauskommen :D

    Ähm ja...
    ...hast Du für mein Problem auch so ne schnelle Lösung zur Hand? Oder ist das aufwändiger?

    Grüße!
    Trekkie2

  • Trekkie2
    LigH
    Danke, die Zeile

    Code
    for %a in (*.*) do @echo STRING1%aSTRING2

    gibt das gewünschte Ergebnis (es geht doch in einer Zeile!) am Bildschirm aus.

    Mit einer kleinen Erweiterung

    Code
    for %a in (*.*) do @echo STRING1%aSTRING2 >> datei.txt

    habe ich sogar das Ergebnis was ich mir gewünscht hatte.

    Danke!

  • Haha! Mein Unsinn funktioniert tatsächlich!
    Schon mal viele (und ich spreche hier von mehreren hundert) JPG Dateien in einem Ordner gehabt und sie als 4/3 anamorph auf DVD-gültiges D1 bringen wollen?

    Mit wenigen Bildern ist es kein Aufwand zu schreiben:
    Dissolve(bild1, bild2, bild3, 25)

    Aber wenn über 100 JPG Dateien die unterschiedlichsten Auflösungen haben, und sogar Hochformat auftreten, dann ist das eine langwierige Tipperei.
    Doch nun reicht ein Dissolve( + \

    Code
    for %a in (*.jpg) do @echo ImageReader("%a",0,0,50),boxto43().Loop(250), + \ >> datei.txt

    ,50)

    Und schon hat man verarbeitbares 50P was mit einem anschließenden

    Code
    assumetff()
    separatefields().selectevery(4,0,3).weave()

    durch seinen LieblingsMPEG2-Encoder schicken kann. Das Laden der AVS dauer ein bisschen ... aber man kann ja nicht alles haben!

    Danke Jungs, das hat mir sehr viel Arbeit erspart.

  • Danke LigH!

    Hier noch der Link: http://www.replsoft.com/replacer.html

    Aber kann es sein, daß das alles GUI-Programme sind? Ich brauche das so daß ich das per Kommandozeile aufrufen kann - falls das mit dem Tool klappt, ist es glaub ich genau das, was ich suche. Hab nur im Moment viel Arbeit, daher werd ichs erst am Wochenende probieren - also erstmal: Danke! :daumen:

    Grüße!
    Trekkie2

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!