Batchdatei Rename Problem?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Ich glaube der Fehler steckt in deiner zweiten for-Schleife. Zunächst fällt auf, dass du statt einfach nur den String %%f anzugeben diesen mit echo schreibst (das ist zwar unnötig, sollte aber noch kein Grund für einen Fehler sein). Da du die for-Schleife ausschließlich zum setzen einer Variablen verwendest, die du auch so setzen könntest, ist diese komplett unnötig. Vielmehr ist diese Variable sogar die Fehlerquelle: Sie ist zu Beginn noch nicht definiert, da cmd erst die Variablen durch ihre Werte ersetzt und dann anfängt den Code auszuführen. In deinem Fall ist das ganze aber leicht zu beheben (auch ohne DelayedExpansion, mit der Variablen verzögert ausgelesen werden können): Da du die Variable nur einmal brauchst, kannst du sie komplett weglassen und an der Stelle direkt ihren variablen Wert eintragen:

@echo off
set /p "ort=Verzeichnis: "
set /p "vorsilbe=Vorsilbe: "
echo.
echo Veraenderte Dateien:
for /R "%ort%" %%F in (.) do (
    echo."%%F"
    rename "%%~fF" "%vorsilbe%%~nxF"
)
pause

Habe mir jetzt keine Ordnerstruktur angelegt und getestet, müsstest mal eben selber schauen, ob es jetzt funktioniert.

PS: Nachdem du nur veränderte Dateien ausgeben willst, ist das hier vielleicht besser geeignet:

@echo off
set /p "ort=Verzeichnis: "
set /p "vorsilbe=Vorsilbe: "
echo.
echo Veraenderte Dateien:
for /R "%ort%" %%F in (.) do (
    ren "%%~fF" "%vorsilbe%%~nxF" && echo."%%F"
)
pause

WeggeW 
Fragesteller
 17.02.2019, 16:24

Danke, hat funktioniert !

Man muss allerdings statt (.) (*.*) schreiben.

1
timlg07  18.02.2019, 20:48
@WeggeW

stimmt, sonst wird ja nur die Verzeichnisstruktur aufgelistet.

0
Tobitail  21.02.2019, 14:18

Da muss ich ihnen widersprechen. Ich glaub der Fehler liegt in der IF-Schleife und While Abfrage.

1
timlg07  21.02.2019, 20:43
@Tobitail

Sehr gut erkannt! Ich sehe Sie sind ein Profi in Sachen cmd-Programmierung, wo es weder while-Abfragen, noch while-Schleifen gibt.

0

du kannst die ja erstmal all durch nummerieren indem du alle im explorer markierst und bei gedrücker SHIFT taste auf umbenennen klickst und dann eine datei umbenennst, die anderen heißen dann alle NAME (1) und NAME (2) und so weiter.

Bevor man einen Fehler findet, muss man ihn vereinfachen. D.h. mache Dir ein Testverzeichnis und beginne damit, dass Du statt Platzhaltern den Variablennamen in die batch schreibst. Danach änderst Du ein Ding nach dem anderen in die Var.

Hast Du bei einer einzelnen Zeile / Var wieder ein Problem, dann freue ich mich, Dir zu helfen. Zur Zeit habe ich das Gefühl, Du sagst: "Ich will das nicht debuggen, mache es für mich."

Woher ich das weiß:Berufserfahrung – ich arbeite schon sehr lange im EDV Bereich, viele Sparten

WeggeW 
Fragesteller
 16.02.2019, 17:26

Ich hab mir mit set mal die Variablen anzeigen lassen (hat bei allen Dateien geklappt (%%f=H:\test\datei.txt %varib%=Vorsilbe_datei.txt)) und dann bei rename manuell den Pfad und den Namen eingetragen (ohne Variablen (rename "H:\test\datei.txt" "Vorsilbe_datei.txt")), da hat rename auch funktioniert.

Nur mit Variablen funktioniert rename nicht. Kann es sein, dass rename keine Pfade aus Variablen nimmt ?

1
Mauritan  16.02.2019, 19:23
@WeggeW

Gut gemacht!

Dass rename keine Vars nehmen würde, glaube ich nicht. Doch so ein Projekt habe ich noch nie umgesetzt (dafür ein paar tausend andere in zig Sprachen).

Probiere die Var-Übergabe jetzt Stück für Stück: Also einmal den Pfad schreiben, dann die Endung... Kannst auch mal ? und * probieren zum Testen.

Was mir allerdings sofort auffällt: In der Zeile mit den Klarnamen verwendet Du Anführungszeichen, in jenen mit der Variable nicht.

1