Programmieren - alles kontrollieren 4.941 Themen, 20.715 Beiträge

Batchprogrammierung

trigger / 6 Antworten / Baumansicht Nickles

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

bei Antwort benachrichtigen
Borlander trigger „Batchprogrammierung“
Optionen

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

bei Antwort benachrichtigen
trigger Borlander „Wenn Du einfach nur alle Wav-Dateien incl. kompletten Pfad ausgeben möchtest,...“
Optionen

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

bei Antwort benachrichtigen
Borlander trigger „Hallo, Die Frage geht ja eigentlich aus der Beschreibung hervor:...“
Optionen
Das heisst also Teile von von den gefundenen Dateien weiterbenutzen:(Erweiterung, Laufwerksbuchstabe usw.) getrennt voneinander weiterverarbeiten .
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 (").
%~fI - Expandiert %I zu einem vollständigen Dateinamen.
%~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
bei Antwort benachrichtigen
trigger Borlander „ Ganau das wird doch in der Hilfe beschrieben siehe Hervorhebung . Was genau...“
Optionen

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

bei Antwort benachrichtigen
trigger Nachtrag zu: „Hallo, Hier ein Beispiel: -------------------- FOR /R f in .wav DO echo File f...“
Optionen

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

bei Antwort benachrichtigen
Borlander trigger „Hallo, Ich habs herausgefunden zu Blöd wenn man bind ist. Original : FOR /R f...“
Optionen
Der Unterschied besteht tatsächlich nur in einem Buchstaben...der aber wichtig ist.
Irgendwie muß der Computer ja wissen welche Variable mach verwenden möchte ;-)

Gruß
Borlander
bei Antwort benachrichtigen