Hallo, liebe Gemeinde,
Ich habe folgendes einfaches Batchprogramm:
@echo off
--------
FOR /R %%f in (*.wav) DO (
echo File = "%%f"
)
-------------
Dieses Programm soll aus einer Partition alle *.wav Dateien finden
und ausgeben.Das funktioniert auch soweit.
Nun habe ich gesehen dass es beim dem 'for' Kommando weitere Parameter
gibt um Teile eines vollständigen Dateinames aufzulösen:
(Laufwerk, Pfad, Erweiterung usw.)
Leider habe ich es nöch nicht geschafft diese Teile zu erhalten und sie z.B.: mit dem 'echo' - Kommando auszugeben oder an weiter Programme zu übergeben.
Ich habe Windows XP SP2. Die Parameter lassen sich dort mit for /? (letzte Seite der Anzeige) in einer Dos Eingabeaufforderung alle auflisten.
Vielen Dank für eure Hilfe im voraus,
Gruß,
Trigger
Programmieren - alles kontrollieren 4.941 Themen, 20.715 Beiträge
Wenn Du einfach nur alle Wav-Dateien incl. kompletten Pfad ausgeben möchtest, dann mach das doch einfach mit
DIR *.wav /S /B
Ansonsten: Kann es sein das Du die Frage vergessen hast? ;-) (Ich finde zumindest keinen Fragesatz in Deinem Posting)
Gruß
Borlander
Hallo,
Die Frage geht ja eigentlich aus der Beschreibung hervor:
-----------------------------
Leider habe ich es nöch nicht geschafft diese Teile zu erhalten und sie z.B.: mit dem 'echo' - Kommando auszugeben oder an weiter Programme zu übergeben.
---------------------------------
Ich möchte also das was ich nicht schaffe nun doch schaffen.....
Das heisst also Teile von von den gefundenen Dateien weiterbenutzen:(Erweiterung, Laufwerksbuchstabe usw.) getrennt voneinander weiterverarbeiten .
Frage:Wie geht das ?
Gruß, Trigger
Frage:Wie geht das ?
Ganau das wird doch in der Hilfe beschrieben (siehe Hervorhebung). Was genau funktioniert nicht so wie Du es Dir vorstellst, bzw. wo kommst Du nicht weiter?
Zusätzlich wurde die Ersetzung von Verweisen auf FOR-Variablen erweitert.
Sie können jetzt folgende Syntax verwenden:
%~I - Expandiert %I und entfernt alle umschließenden
Anführungszeichen (").
%~dI - Erzeugt nur den Laufwerkbuchstaben von %I.
%~pI - Erzeugt nur den Pfad von %I.
%~nI - Erzeugt nur den Dateinamen von %I.
%~xI - Erzeugt nur die Dateierweiterung von %I.
%~sI - Erzeugter Pfad enthält nur kurze Dateinamen.
%~aI - Erzeugt die Dateiattribute von %I.
%~tI - Erzeugt Datum und Zeit von %I.
%~zI - Erzeugt die Dateigröße von %I.
%~$PATH:I - Durchsucht die in der PATH-Umgebungsvariablen
angegebenen Verzeichnisse und expandiert die erste
gefundene Datei %I zu dem vollständigen Dateinamen.
Wenn der Name der Umgebungsvariablen nicht definiert
ist oder diese Datei bei der Suche nicht gefunden wurde,
wird dieser Parameter zu einer leeren Zeichenkette
expandiert.
Diese Parameter können auch miteinander kombiniert werden:
%~dpI - Erzeugt den Laufwerkbuchstaben und Pfad von %I.
%~nxI - Erzeugt den Dateinamen und die Dateierweiterung von %I.
%~fsI - Expandiert %I zu einem vollständigen Namen, der nur
kurze Dateinamen enthält.
%~dp$PATH:I - Durchsucht die in der PATH-Umgebungsvariablen
angegebenen Verzeichnisse nach %I und erzeugt den
Laufwerkbuchstaben und Pfad der ersten gefundenen Datei.
%~ftzaI - Expandiert %I zu einer Zeile, die der Ausgabe des DIR-
Befehls entspricht.
Gruß
Borlander
Hallo,
Hier ein Beispiel:
--------------------
FOR /R %%f in (*.wav) DO (
echo File = "%%f"
echo Name = "%%~nI"
)
----------------
Damit sollten doch alle Dateien und danach nur der Dateiname ausgegeben werden.
Tja die Ausgabe sieht aber folgendermassen aus:
(der Datename wir gefunden und angezeigt):
echo File = abc.wav
aber gefolgt von folgender Ausgabe:
Name = "%~nI"
Gruß, Trigger
Hallo, Ich habs herausgefunden
(zu Blöd wenn man bind ist.)
Original :
FOR /R %%f in (*.wav) DO (
echo File = "%%f"
echo Name = "%%~nI"
)
Jetzt läuft es:
FOR /R %%f in (*.*) DO (
echo File = "%%f"
echo Name = "%%~nf"
)
Der Unterschied besteht tatsächlich nur in einem Buchstaben...der aber wichtig ist.
Gruß, Trigger
Irgendwie muß der Computer ja wissen welche Variable mach verwenden möchte ;-)
Gruß
Borlander