Probleme mit Batch Datei

Klendathu

Cadet 3rd Year
Registriert
März 2017
Beiträge
45
Hallo Leute,

ich habe Probleme mit einer Batch Datei

hier der inhalt

pause
FOR /R %x IN (*trimmed.mp3) DO ren "%x" *.abc
pause
del *.mp3 /s
pause
FOR /R %x IN (*.abc) DO ren "%x" *.mp3
pause

Die datei benennt alle mp3s in einem verzeichnis und unterverzeichnis um. sie haben danach die endung .abc
dann werden die mp3s gelöscht und die abc dateien wieder zu mp3s umbenannt

wenn ich alle befehle in cmd nacheinander eingebe, funktioniert alles reibungslos, schritt für schritt und das ergebnis ist korrekt.
aber wenn ich die fertige bat datei, so wie der inhalt hier steht, ausführe, bekomme ich bei zeile 2 (For /R...) einen Syntaxerror. Es sxcheint am " zu liegen, ich konnte es bisher noch nicht lösen.

Hat hier jemand eine Idee, wieso die kommandos selbst, alleinstehend funktionieren aber die bat datei als solche nicht funktioniert?

Wäre für jede Art von Hilfe dankbar

Lg Klen
 
Hi,

In einer Batch brauchst Du das % beim x zweimal. Also so %%x.

Code:
pause
for /R %%x in (*trimmed.mp3) do ren %%x *.abc
pause
del *.mp3 /s
pause
for /R %%x in (*.abc) DO ren %%x *.mp3
BFF
 
Zuletzt bearbeitet:
Hi BFF

Danke für die Hilfe. Aber so, wie du mir den Code geschickt hast, bekomme ich leider nur Syntaxerror bem Ausführen der Batch Datei. Hmmm? Hast du ne Idee?

Lg
 
Nope.

Ich seh ja den Fehler bei Dir nicht. ;)

Hoffe Du hast die 123456 nicht mit kopiert.

BFF
 
Klendathu schrieb:
Die datei benennt alle mp3s in einem verzeichnis und unterverzeichnis um. sie haben danach die endung .abc
dann werden die mp3s gelöscht und die abc dateien wieder zu mp3s umbenannt
Magst du vielleicht mal genauer beschreiben was du am Ende erreichen willst und nicht wie du glaubst es lösen zu müssen? Deine Beschreibung klingt nämlich verdächtig nach einem XY-Problem. Ich vermute nämlich, dass du eigentlich das "trimmed" aus den Dateinamen entfernen willst?

Code:
SETLOCAL ENABLEDELAYEDEXPANSION

FOR /R %%a IN (*trimmed.mp3) DO (
   set filename=%%a
   set filename=!filename:trimmed=!
   ren %%a !filename!
)

Das sollte den Substring "trimmed" aus filename ersetzen, mit nix -> trimmed wird entfernt.

Wenn Syntaxfehler auftreten oder das Ergebnis nicht dem entspricht was du erreichen wolltest, bitte nach Möglichkeit ganz genau beschreiben was für ein Fehler ausgegeben wird oder wie das falsche Ergebnis aussieht, gerne auch mit Screenshots. Ich schreibe zB gerade am Tablet und hab den Code gerade aus dem Ärmel geschüttelt.
Ergänzung ()

Ich vermute übrigens, dass der Syntaxfehler vom rename-Kommando kommt. Effektiv wird deine for-Schleife wohl so aufgelöst :

ren blatrimmed.mp3 *.abc
ren blubbtrimmed.mp3 *.abc
ren mehrblatrimmed.mp3 *.abc

Das dürfte so auch außerhalb der Batch nicht funktionieren, weil man ren schon konkret sagen muss wie die Datei nu heißen soll, ohne wildcards...
 
Zuletzt bearbeitet:
Nene. Das Schnippselchen da oben von mir klappt schon.

1551138503165.png


1551138674014.png
1551138711672.png


1551138759762.png
1551138795077.png



Am Ende bleiben nur die "trimmed" ueber.
Hast aber recht. @Raijin Der TE sollte sich mal aeussern was nun genau los ist. :D

BFF
 
  • Gefällt mir
Reaktionen: Raijin
Ah, ok. Wie gesagt, am Tablet konnte ich es nicht ausprobieren. Ich überlege dann aber ob man nicht direkt

ren *trimmed.mp3 *.abc

machen kann. Oder sogar

ren *trimmed.mp3 *.mp3


Muss ich morgen mal am Laptop ausprobieren. Wenn das klappt, braucht man gar keine Schleife mehr.
 
Abwarten was der TE ueberhaupt wirklich will.
Ich seh es so, dass er MP3 bearbeitet hat die dann "trimmed" im Namen haben und er die Quellen weghaben will.
Du siehst das so, dass er eigentlich die "trimmed" umbenennen will.

Schau'n wir mal. :D

BFF
 
Raijin schrieb:
Das dürfte so auch außerhalb der Batch nicht funktionieren, weil man ren schon konkret sagen muss wie die Datei nu heißen soll, ohne wildcards...
https://ss64.com/nt/ren.html
Both the SourceMask and TargetMask can contain * and/or ? wildcards.



Raijin schrieb:
Ich überlege dann aber ob man nicht direkt

ren *trimmed.mp3 *.abc

machen kann. Oder sogar

ren *trimmed.mp3 *.mp3
Das kannst Du zwar machen, aber es kommt nicht das raus, was Du vermutlich überlegst. Die Wildcards für Quelle und Ziel werden zum einen unterschiedlich und zum anderen auch noch getrennt voneinander interpretiert.

ren *trimmed.mp3 *.abc -> ändert die Dateierweiterung von Dateien die auf "trimmed.mp3" enden auf "abc"
ren *trimmed.mp3 *.mp3 -> macht effektiv überhaupt nichts
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Raijin
Sorry, für die späte Antwort und Thx für den Demolauf der Batch Datei!

Ja, es ist genauso, wie vermutet. Ich will meine ursprünglichen Dateien wieder haben. Also bzw. die "trimmed" Dateien in den ursprünglichen Dateinamen zurückschreiben :-)

Die Batch werde ich nochmal ausprobieren.
 
Zurück
Oben