Datei-Endung von .xml zu .txt

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von CarlitosFFM, 02.09.2009.

  1. #1 CarlitosFFM, 02.09.2009
    CarlitosFFM

    CarlitosFFM Grünschnabel

    Dabei seit:
    02.09.2009
    Beiträge:
    3
    Zustimmungen:
    0
    Hallo Board-Mitglieder,

    ich bin leider noch kein Skript Guru :-)

    Ich möchte gerne zur Übung folgendes tun:

    1. Rekursive Bearbeitung ALLER XML Dateien im Verzeichnis (25 Dateien)
    2. Änderung der Datei-Endung von .xml zu .txt
    3. Code Aufruf (eigentlicher Bearbeitungscode) automatisiert über Skript in Batch
    4. Änderung der Datei-Endung von .txt zu .xml

    Leider versuche ich zum ersten Mal mit dem Programmieren und schaffe es nicht, auch so einfach es auch klingt.

    Würde mich freuen, wenn mit einer einen Hinweis hier schreiben würde.

    Gruß,
    Carlitos
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. defcon

    defcon Kaiser
    Moderator

    Dabei seit:
    22.08.2005
    Beiträge:
    1.486
    Zustimmungen:
    1
    Ort:
    Bruchsal
    Zum ändern der Dateiendungen könntest du dir mal die manpage von mv durchlesen.
     
  4. #3 Gast123, 02.09.2009
    Gast123

    Gast123 Guest

    Willkommen!

    Wieso rekursiv ändern? Wie soll das gehen?
    Meinst du iterativ?

    Sonst wie defcon sagte...

    MfG
     
  5. #4 saeckereier, 02.09.2009
    saeckereier

    saeckereier Graue Eminenz

    Dabei seit:
    08.05.2005
    Beiträge:
    1.920
    Zustimmungen:
    0
    Ort:
    Im schönen Norden
    Befasst euch mal mit den Standardutilities auf Linux Systemen, es gibt da so ein praktisches Tool namens rename...
     
  6. #5 Gast123, 02.09.2009
    Zuletzt von einem Moderator bearbeitet: 02.09.2009
    Gast123

    Gast123 Guest

    Hätte es so gelößt:
    Code:
    #! /bin/bash
    
    for f in *.xml
    do
      mv $f ${f%%.xml}.txt;
    done
    
    Holla,
    mit rename kann man sich ja die Schleife sparen...:
    Code:
    rename .xml .txt *.xml
    
    nice 2 know.
    Danke an saeckereier

    MfG
     
  7. #6 CarlitosFFM, 02.09.2009
    CarlitosFFM

    CarlitosFFM Grünschnabel

    Dabei seit:
    02.09.2009
    Beiträge:
    3
    Zustimmungen:
    0
    Danke Jungs!

    @Schard:

    Ja meinte iterativ und nicht rekursiv...
     
  8. #7 saeckereier, 02.09.2009
    saeckereier

    saeckereier Graue Eminenz

    Dabei seit:
    08.05.2005
    Beiträge:
    1.920
    Zustimmungen:
    0
    Ort:
    Im schönen Norden
    *g* Jo, als mir irgendjemand mal gesagt hat, dass es das Kommando gibt habe ich aber auch blöde geguckt...
     
  9. marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.053
    Zustimmungen:
    8
    dazu noch eine kurze Anmerkung: Es gibt verschiedene Versionen von rename - und die haben lustigerweise eine komplett andere Aufrufssyntax.

    Unter Debian/*buntu/... z.B. wird das obige nicht funktionieren, da will das Tool eine nette RegEx haben...
     
  10. #9 CarlitosFFM, 03.09.2009
    CarlitosFFM

    CarlitosFFM Grünschnabel

    Dabei seit:
    02.09.2009
    Beiträge:
    3
    Zustimmungen:
    0
    Hallo Jungs:

    Habe folgendes gemacht:

    #!/bin/bash
    #
    ###############################################################################
    #
    ###############################################################################
    # -----------------------------------------------------------------------------
    #

    set ECHO=ON

    # -----------------------------------------------------------------------------
    # Pfade festlegen
    # -----------------------------------------------------------------------------
    SRCDIR="C:\Dokumente und Einstellungen\Carlito\Desktop\Quelle"
    DESTDIR="C:\Dokumente und Einstellungen\Carlito\Desktop\Ziel"
    CODEDIR="C:\Dokumente und Einstellungen\Carlito\Desktop\"

    SOFTWARE_PATH="D:\...\....exe"
    # -----------------------------------------------------------------------------

    # Beginne forever loop
    # -----------------------------------------------------------------------------
    for SFILE in ${SRCDIR}/* ; do
    FILE=$(basename ${SFILE})
    # -----------------------------------------------------------------------------

    # Test ob Dateiname einen Punkt enthaelt
    # -----------------------------------------------------------------------------
    FIELDS=$(echo ${FILE} | awk '{FS="."} {print NF}')
    if [ ${FIELDS} -gt 1 ] ; then
    SUFFIX=$(echo ${FILE} | awk '{FS="."} {print $NF}')
    BASE=$(basename ${FILE} "."${SUFFIX})
    BASE=${BASE}.
    else
    SUFFIX=""
    BASE=$FILE
    fi
    BASEOLD=${BASE}
    BASE=$(echo $BASE | tr '[a-z]' '[A-Z]') 2> /dev/null
    if [ ! ${SUFFIX} = "" ] ; then
    if [ ${SUFFIX} = "xml" ] ; then
    SUFFIX="txt"
    fi

    # ----------------------------------------------------------------
    # Name des Jobs
    # ----------------------------------------------------------------
    SSTPNAME=xml

    ${SAS_PATH}/....sh -nolog -noterminal -sysin ${CODEDIR}/${SSTPNAME}.exe
    # -----------------------------------------------------------------------------

    # Kopiere Datei um von txt nach xml Endung.
    # -----------------------------------------------------------------------------
    cp ${SRCDIR}/${BASE}txt ${SRCDIR}/${BASE}xml

    Wie kann ich hier eine schleife draus machen, damit alle Dateien im Verzeichnis kopiert wird???
    # -----------------------------------------------------------------------------
    # Ende
    # -----------------------------------------------------------------------------


    Komme grad nicht weiter...
     
  11. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  12. marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.053
    Zustimmungen:
    8
    Klingt nach einem Job für find...

    Dein Script wäre übrigens lesbar, wenn Du
    Code:
    -Tags verwenden würdest...
     
  13. #11 saeckereier, 03.09.2009
    saeckereier

    saeckereier Graue Eminenz

    Dabei seit:
    08.05.2005
    Beiträge:
    1.920
    Zustimmungen:
    0
    Ort:
    Im schönen Norden
    Häh? Warum auf einmal so kompliziert? Außerdem ist das cygwin oder so was? Wie wäre es, wenn du sowas vorher einmal erwähnst.. C:\ sollte schon nicht mehr klappen, weils entweder C:\\ oder C:/ sein müßte..
     
Thema:

Datei-Endung von .xml zu .txt