Datei-Endung von .xml zu .txt

C

CarlitosFFM

Grünschnabel
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
 
Zum ändern der Dateiendungen könntest du dir mal die manpage von mv durchlesen.
 
Willkommen!

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

Sonst wie defcon sagte...

MfG
 
Befasst euch mal mit den Standardutilities auf Linux Systemen, es gibt da so ein praktisches Tool namens rename...
 
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
 
Zuletzt bearbeitet von einem Moderator:
Danke Jungs!

@Schard:

Ja meinte iterativ und nicht rekursiv...
 
*g* Jo, als mir irgendjemand mal gesagt hat, dass es das Kommando gibt habe ich aber auch blöde geguckt...
 
Holla,
mit rename kann man sich ja die Schleife sparen...:
Code:
rename .xml .txt *.xml
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...
 
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...
 
Klingt nach einem Job für find...

Dein Script wäre übrigens lesbar, wenn Du
Code:
-Tags verwenden würdest...
 
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..
 
Zurück
Oben