powl89
Goto Top

Dateien erstellen

Hallo zusammen,

ich will eine kleine Konsolenanwendung via Batch schreiben.
Sie soll folgendes erledigen:
Ich hab einen Ordner, in dem diverse *.xml Dateien vorhanden sind.
Diese Anwendung soll jetzt zu jeder *.xml Datei eine *.rdy Datei mit einem identischen Namen erzeugen.

Bisher bin ich soweit:

@echo off & setlocal
for %%i in ("C:\Pfad\*.*") do if not exist "%%i.rdy" echo\>"%%i.rdy"

Funktioniert soweit auch.
Allerdings heißen die Dateien bei mir dann "Dateiname.xml.rdy".
Wie bekomme ich nun das kürzel ".xml" aus dem Namen meiner *.rdy Datei?

Gruß

Paul

Content-Key: 100529

Url: https://administrator.de/contentid/100529

Printed on: May 4, 2024 at 19:05 o'clock

Member: powl89
powl89 Oct 29, 2008 at 15:05:59 (UTC)
Goto Top
bin jetzt soweit, dass die Datei ohne das .xml erzeugt wird:

@echo off & setlocal
for %%i in ("C:\Pfad\*.*") do for /F "delims=." %%n in ("%%i") do if not exist "%%n.rdy" echo\>"%%n.rdy"


Allerdings ist es doch jetzt der Fall, dass es zu Problemen kommt, sobald mehrere "." in dem Dateinamen enthalten sind oder?
Member: bastla
bastla Oct 29, 2008 at 15:11:26 (UTC)
Goto Top
Hallo powl89 und willkommen im Forum!

Besser wird's so gehen:
@echo off & setlocal
for %%i in ("C:\Pfad\*.xml") do if not exist "%%~dpni.rdy" echo\>"%%~dpni.rdy"  
Mit "for /?" und der nötigen Geduld, bis fast an's Ende zu lesen (oder zumindest zu blättern face-wink), kannst Du das dann hoffentlich nachvollziehen ...

Grüße
bastla

P.S.: Falls Dir die Formatierung meines Code-Beispiels gefallen sollte:
Member: powl89
powl89 Oct 31, 2008 at 07:40:54 (UTC)
Goto Top
Hey bastla,

das mit dem ~dpni hatte ich zuvor schonmal gesehen, hatte allerdings immer ein "-" statt "~" verwendet face-wink
Klappt auf jeden Fall einwandfrei.

Vielleicht könntest du mir aber nochmal kurz erklären was jetzt genau passiert durch das "~dpni" !?
Bin nicht so ganz bewandert was BATCH angeht ;)

Besten Dank !

Gruß
powl
Member: bastla
bastla Oct 31, 2008 at 07:58:48 (UTC)
Goto Top
Hallo powl89!

... was jetzt genau passiert durch das "~dpni" !?
... steht, wie erwähnt, in der Hilfe zu "for" (in "Einzelteilen" face-wink).

In diesem Fall hier steht bei jedem Schleifendurchlauf in "%%i" der vollständige Pfad einer ".xml"-Datei - dieser Pfad setzt sich zusammen aus:

drive = Laufwerk = "C:"
path = Pfad = "\Pfad\"
name = Dateiname = "DerName"
extension = Typ = ".xml"

Mit Ausnahme des Typs (dafür willst Du ja ".rdy" verwenden), wird alles andere benötigt ...

Grüße
bastla
Member: powl89
powl89 Oct 31, 2008 at 08:37:28 (UTC)
Goto Top
Hey bastla,

vielen Dank. Das hat mich um einiges weitergebracht.
Eine letzt kleine Frage hätte ich aber noch:

Wofür steht das i ?

Wie gesagt, bin nicht ganz bewandert was BATCH angeht face-wink

Gruß
powl
Member: bastla
bastla Oct 31, 2008 at 08:45:43 (UTC)
Goto Top
Hallo powl89!
Wofür steht das i ?
In "for"-Schleifen werden einzelne Buchstaben als Schleifenvariable verwendet, und "i" wird dafür vorwiegend (wie auch in anderen Programmiersprachen) verwendet - der Buchstabe ist aber frei wählbar, daher könnte die Schleife auch lauten:
for %%a in ("C:\Pfad\*.xml") do if not exist "%%~dpna.rdy" echo\>"%%~dpna.rdy"
Der Teil "~dpn" wird dann einfach zwischen "%%" und dem Buchstaben eingefügt.

Grüße
bastla
Member: powl89
powl89 Oct 31, 2008 at 08:47:24 (UTC)
Goto Top
Alles klar, so hab ichs mir vorgestellt.
Danke face-wink

Ist es evtl. auch möglich, dass die Batchdatei sich den Pfad speichert, in dem sie ausgeführt wird?
Sprich ich führ die Datei auf dem Desktop aus, also sollen da die Dateien gesucht und erzeugt werdne.
Führe ich sie in einem anderen ordner aus, soll dies dort geschehen.
So dass ich also den Pfad nicht manuell angeben muss !?

Gruß
powl

[EDIT]
Habs hinbekommen.
Vielen Dank bastla.
[/EDIT]