none
verschiedene Textdateien aus einem Ordner zusammen fügen mit Überschrift der entsprechenden TXT-Datei RRS feed

  • Frage

  • Hallo Leute :-)

    ich bin neu hier und ich weiß nicht 100%ig, ob diese frage in dieser Form schon einmal gestellt wurde.
    Ich würde mich freuen, wenn mir jemand helfen könnte. ich habe leider mit PowerShell noch keine Erfahrung machen können und ich habe vielleicht ein spezielles Thema o. Anliegen. Ich habe einen Windows Server 2012R2 und die Frage ist beruflich.

    Folgendes:

    Ich habe ca. 20 Verzeichnisse mit jeweils einer X-Anzahl an TXT-Dokumenten
    Die Verzeichnisnamen (der Ordner) und der Inhalt, die TXT-Dokumente, haben immer denselben Namen und ändern sich nicht.
    Im Ordner sind ca. 30 TXT-Dateien, wovon ich 14 TXT-Dateien nur benötige.
    Das bleibt aber gleich und ändert sich nicht, wie schon erwähnt.

    Bsp:

    Ordner Baum
    Ordner Tisch
    Ordner Stift
    Ordner Heft   usw....

    In diesen Ordnern befinden folgende TXT-Dateien:

    Im Ordner Baum -> grün.txt
                                   blau.txt
                                   rot.txt   
                                   gelb.txt      usw.....
    Aufbau TXT:
    Normale textwerte, können aber auch Tabellenwerte enthalten.
    Da ja der Inhalt kopiert wird, sollte der Aufbau ja nicht verändert werden.

    Auf Arbeit sind diese Daten in einer Txt-Datei enthalten.
    dies sind unteranderem Code-Logs o. Event-Logs o. anderes.
    Wie gesagt, die Ordnernamen ändern sich nicht und die namen der TXT-Dateien ändern sich nicht.
    Außer, der Inhalt.

    Aufgabe:

    ich muss den Inhalt aus den TXT-Dateien (grün, blau, rot, gelb usw...) in eine Txt-Datei zusammen fügen und in ein anderes zentrales Verzeichnis ablegen. Bis dahin wahrscheinlich einfach für Euch :-)

    Was ich aber jetzt benötige ist, wenn die TXT-Dateien zusammen gefügt werden, das der Name der angefügten TXT-Datei als Überschrift zur optischen Trennung erscheint.
    Sprich, ich habe eine TXT Datei mit dem gesamten Inhalt aller als Beispiel oben genannten Dateien mit einer Überschrift.

    Die Überschrift / Trennung inerhalb der Datei ist dann der name der ursprünglichen Datei.

    Also, ich habe jetzt 20 TXT-Dateien zusammen gefügt zu einer und suche nach dem Wort: rot.txt.
    Dadurch lande ich ja dann an die entsprechende Stelle, wo das rot.txt anfängt.
    Oder meinetwegen, wo der inhalt der Event.log anfangen würde.

    Das ist mein Ziel oder aktuell ehr der Wunsch.

    Ich hoffe, Ihr könnt mir folgen... :-(
    Etwas kompliziert zu formulieren.

    Ich danke schon einmal vorab und hoffe, es kann mir jemand helfen :-)
    Vielen lieben Dank

    Montag, 28. Oktober 2019 14:23

Antworten

  • Wie ich schon schrieb, habe ich leider überhaupt keine Erfahren mit Power Shell. Daher habe ich hier nach Hilfe gesucht.

    Bisher klingt es für mich so, als fragtest Du nach einer Lösung. ;-) Du zeigst keinen Code und scheinst noch keine Versuche unternommen zu haben, Dein Problem selbst zu lösen.

    Ich weiß aber nicht wie ich es schreiben muss, das ich A. nur ausgewählte TXT-Dateien in eine zusammen fügen kann

    Wenn Du nur bestimmte Elemente bearbeiten möchtest, packst Du diese Elemente einfach in eine Liste - in Powershell-Terminologie: ein Array. Darüber kannst Du dann mit einer Schleife iterieren.

    B. wie ich den Name der jeweiligen TXT-Datei als Überschrift bzw. dann als "Trennung/Absatz" in die TXT Datei bekomme.

    Wenn Du Dir mit Get-Item oder Get-ChildItem ein Dateiobject erzeugst, kannst Du einfach auf die Eigenschaften zugreifen. Da gibt es dann z.B. den BaseName, den FullName oder - Deiner Anforderung passend - den Name. Das kannst Du dann wieder mittels Out-File oder Add-Content einer Datei hinzufügen.

    Get-ChildItem -Filter *.txt |
        Select-Object Name

    Schleifen oder sonstiges habe ich noch nie genutzt.

    Deshalb meine Empfehlung, die jeweilige Hilfe komplett zu lesen und auch die Beispiele zu beachten. Einfach ein bissl mit dem Code spielen und alles ausprobieren. Das Lernen der Grundlagen können wir Dir nicht abnehmen.


    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    Dienstag, 29. Oktober 2019 10:58

Alle Antworten

  • Ich hoffe, Ihr könnt mir folgen... :-(

    Klar, kein Problem ...  und was ist dann jetzt die eigentliche konkrete Frage?  ;-)

    Na dann erstmal Willkommen im Deutschen Microsoft Powershell Forum!

    Bitte lies erstmal die im Forum oben angepinnten Hinweise und Forenregeln und besonders Wie man am schnellsten die gewünschte Antwort erhält.

    Für die Lösung Deiner (relativ einfachen) Aufgabe benötigst Du für den Anfang die cmdlets Get-ChildItem, Get-Content, vielleicht Add-Content oder Out-File und ein Schleifenkonstrukt wie Foreach-Object oder foreach. Du solltest jeweils die komplette Hilfe inklusive der Beispiele lesen, um zu lernen, wie man die cmdlets benutzt.

    Natürlich sollten Dir die Grundlagen von Powershell bekannt sein - das können wir Dir hier nicht abnehmen oder beibringen ... und -  nur der Vollständigkeit halber - wir leifern hier keine gebrauchsfertigen Lösung auf Anfrage frei Haus.  ;-)


    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    • Bearbeitet BOfH-666 Montag, 28. Oktober 2019 18:03
    Montag, 28. Oktober 2019 18:01
  • Morgen :-)

    Danke für die Rückmeldung und Danke für das "Willkommen" :-).

    Wie ich schon schrieb, habe ich leider überhaupt keine Erfahren mit Power Shell.
    Daher habe ich hier nach Hilfe gesucht.

    Ich habe schon im Netzt gesucht und zumindest gefunden, wie ich alles zusammen in eine TXT-Datei bekomme.

    Ich weiß aber nicht wie ich es schreiben muss, das ich
    A. nur ausgewählte TXT-Dateien in eine zusammen fügen kann und
    B. wie ich den Name der jeweiligen TXT-Datei als Überschrift bzw. dann als "Trennung/Absatz" in die TXT Datei     bekomme.

    Beispiel in der gesamten TXT:

    Absatz grün TXT (als Überschrift) dann Text aus der grün.txt
    Dann folgend blau txt (als Überschrift) und dann Text aus der blau.txt
    usw...

    Da ich keine Erfahrungen damit habe, habe ich gehofft hier Hilfe zu bekommen.

    Schleifen oder sonstiges habe ich noch nie genutzt.
    Vielleicht fehlt mir auch etwas Verständnis dafür.

    Grüße

    Dienstag, 29. Oktober 2019 08:29
  • Wie ich schon schrieb, habe ich leider überhaupt keine Erfahren mit Power Shell. Daher habe ich hier nach Hilfe gesucht.

    Bisher klingt es für mich so, als fragtest Du nach einer Lösung. ;-) Du zeigst keinen Code und scheinst noch keine Versuche unternommen zu haben, Dein Problem selbst zu lösen.

    Ich weiß aber nicht wie ich es schreiben muss, das ich A. nur ausgewählte TXT-Dateien in eine zusammen fügen kann

    Wenn Du nur bestimmte Elemente bearbeiten möchtest, packst Du diese Elemente einfach in eine Liste - in Powershell-Terminologie: ein Array. Darüber kannst Du dann mit einer Schleife iterieren.

    B. wie ich den Name der jeweiligen TXT-Datei als Überschrift bzw. dann als "Trennung/Absatz" in die TXT Datei bekomme.

    Wenn Du Dir mit Get-Item oder Get-ChildItem ein Dateiobject erzeugst, kannst Du einfach auf die Eigenschaften zugreifen. Da gibt es dann z.B. den BaseName, den FullName oder - Deiner Anforderung passend - den Name. Das kannst Du dann wieder mittels Out-File oder Add-Content einer Datei hinzufügen.

    Get-ChildItem -Filter *.txt |
        Select-Object Name

    Schleifen oder sonstiges habe ich noch nie genutzt.

    Deshalb meine Empfehlung, die jeweilige Hilfe komplett zu lesen und auch die Beispiele zu beachten. Einfach ein bissl mit dem Code spielen und alles ausprobieren. Das Lernen der Grundlagen können wir Dir nicht abnehmen.


    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    Dienstag, 29. Oktober 2019 10:58