Veröffentlicht 14. Oktober 200717 j Hi Leute, Habe folgende Situation: Ich habe einen Übergeordnenten Ordner (z.B. Test) In diesem Ordner befinden sich mehrere Unterordner (z.B. test1, test5, blau, usw.) in diesen Unterordnern wiederum weitere Unterordner (z.B. orange, weiß...). In allen Ordnern befinden sich Dateien die ich umbenennen will. (z.B. "*jpg.100" in "*jpg", "*jpeg.100" in "*jpeg", "*bmp.100" in "*bmp"). Das umbenennen funktioniert, jedoch nur bei den Ordnern, die im Ordner C:\test liegen. Liegen die Dateien jedoch eine Ordnderstruktur tiefer, oder direkt unter C:\Test, so funktioniert das leider nicht. Was mache ich falsch? Hier mein Batchfile: @ECHO OFF SET verzeichnis=c:\test FOR /F "tokens=*" %%a in ('DIR %verzeichnis% /AD /B') DO ( IF EXIST "%verzeichnis%\%%a\*jpg.100" REN "%verzeichnis%\%%a\*jpg.100" "*jpg" IF EXIST "%verzeichnis%\%%a\*jpeg.100" REN "%verzeichnis%\%%a\*jpeg.100" "*jpeg" IF EXIST "%verzeichnis%\%%a\*bmp.100" REN "%verzeichnis%\%%a\*bmp.100" "*bmp" ) Please Help! Gruß msanchez
14. Oktober 200717 j @ECHO OFF SET verzeichnis=c:\test FOR /F "tokens=*" %%a in ('DIR %verzeichnis% /AD /B') DO ( IF EXIST "%verzeichnis%\%%a\*jpg.100" REN "%verzeichnis%\%%a\*jpg.100" "*jpg" IF EXIST "%verzeichnis%\%%a\*jpeg.100" REN "%verzeichnis%\%%a\*jpeg.100" "*jpeg" IF EXIST "%verzeichnis%\%%a\*bmp.100" REN "%verzeichnis%\%%a\*bmp.100" "*bmp" IF EXIST "%verzeichnis%\*bmp.100" REN "%verzeichnis%\*bmp.100" "*bmp" ) Würde dein Problem mit den Ordnern in dem Stammordner lösen. @ECHO OFF SET verzeichnis=c:\test FOR /F "tokens=*" %%a in ('DIR %verzeichnis% /AD /S /B') DO ( IF EXIST "%%a\*jpg.100" REN "%%a\*jpg.100" "*jpg" IF EXIST "%%a\*jpeg.100" REN "%%a\*jpg.100" "*jpeg" IF EXIST "%%a\*bmp.100" REN "%%a\*jpg.100" "*bmp" IF EXIST "%verzeichnis%\*jpg.100" REN "%verzeichnis%\*bmp.100" "*jpg" IF EXIST "%verzeichnis%\*jpeg.100" REN "%verzeichnis%\*bmp.100" "*jpeg" IF EXIST "%verzeichnis%\*bmp.100" REN "%verzeichnis%\*bmp.100" "*bmp" ) Sollte alle deine Bedingungen erfüllen. Probier einfach mal den Schalter /S dazu. Der führt alle Ordner und Unterordner absolut auf. Habs etz allerdings nicht ausprobier und ich garantiere nicht für Fehler. Mit freundlichen Grüßen, Cadpax
14. Oktober 200717 j Hi Cadpax, Danke für deine Antwort. Das Problem im Stammordner ist mit deinem Tipp gelöst. Der Schalter /S bewirkt leider nichts, hab es auf die unterschiedlichsten Arten probiert.
14. Oktober 200717 j Welche Windows Version? Bei mir (XP Prof SP2) gehts ohne Probleme. (eben getestet) *edit* Seh gerade nen Fehler @ECHO OFF SET verzeichnis=Ordner FOR /F "tokens=*" %%a in ('DIR %verzeichnis% /AD /S /B') DO ( IF EXIST "%%a\*jpg.100" REN "%%a\*jpg.100" "*jpg" IF EXIST "%%a\*jpeg.100" REN "%%a\*jpeg.100" "*jpeg" IF EXIST "%%a\*bmp.100" REN "%%a\*bmp.100" "*bmp" IF EXIST "%verzeichnis%\*jpg.100" REN "%verzeichnis%\*jpg.100" "*jpg" IF EXIST "%verzeichnis%\*jpeg.100" REN "%verzeichnis%\*jpeg.100" "*jpeg" IF EXIST "%verzeichnis%\*bmp.100" REN "%verzeichnis%\*bmp.100" "*bmp" echo %%a ) pause So Stimmts. ;-) Echo + pause zur Kontrolle
14. Oktober 200717 j Wenn ich den Schalter /S setzte, dann benennt er mir nur das um, was sich in C:\Test befindet alle Unterordner bleiben unberührt. *Am Kopf kratz* Mit "echo/%%a" zeigt er mir die Unterordner und auch die darin liegenden Ordner an, er erkennts sie also. Aber er benennt mit die Dateien einfach nicht um. Mein System ist WinXP SP2 inkl. alle Updates. Der Code sieht nun folgendermaßen aus. Vielleicht fällt dir noch etwas Ungewöhnliches auf: @ECHO OFF SET verzeichnis=c:\test FOR /F "tokens=*" %%a in ('DIR %verzeichnis% /AD /S /B') DO ( IF EXIST "%verzeichnis%\*gif.100" REN "%verzeichnis%\*gif.100" "*gif" IF EXIST "%verzeichnis%\*jpg.100" REN "%verzeichnis%\*jpg.100" "*jpg" IF EXIST "%verzeichnis%\*jpeg.100" REN "%verzeichnis%\*jpeg.100" "*jpeg" IF EXIST "%verzeichnis%\*bmp.100" REN "%verzeichnis%\*bmp.100" "*bmp" IF EXIST "%verzeichnis%\%%a\*gif.100" REN "%verzeichnis%\%%a\*gif.100" "*gif" IF EXIST "%verzeichnis%\%%a\*jpg.100" REN "%verzeichnis%\%%a\*jpg.100" "*jpg" IF EXIST "%verzeichnis%\%%a\*jpeg.100" REN "%verzeichnis%\%%a\*jpeg.100" "*jpeg" IF EXIST "%verzeichnis%\%%a\*bmp.100" REN "%verzeichnis%\%%a\*bmp.100" "*bmp" echo %%a ) pause
14. Oktober 200717 j Jap. Du verkettest das Verzeichnis mit dem absoluten Pfad. Der dir befehl gibt dir schon den kompletten Pfad zurück.Also c:\test\u1 c:\test\u2 c:\test\u3 .... Du verkettest den noch, das schaut dann letzendlich so aus: c:\test\c:\test\u1 Und zwar in den unteren 4 Zeilen: IF EXIST "%verzeichnis%\%%a\*gif.100" REN "%verzeichnis%\%%a\*gif.100" "*gif" IF EXIST "%verzeichnis%\%%a\*jpg.100" REN "%verzeichnis%\%%a\*jpg.100" "*jpg" IF EXIST "%verzeichnis%\%%a\*jpeg.100" REN "%verzeichnis%\%%a\*jpeg.100" "*jpeg" IF EXIST "%verzeichnis%\%%a\*bmp.100" REN "%verzeichnis%\%%a\*bmp.100" "*bmp" Das %verzeichnis%\ ist hier falsch, da schon in %%a mit drin. Dir dürften auch die kompletten Pfad ausgegeben werden. ;-) Mit freundlichen Grüßen, Cadpax
14. Oktober 200717 j Jawohl das wars! Hab den Wald vor lauter Bäumen nicht gesehen :-) Du hast mir den Sonntag gerettet. Muchas Gracias! Cadpax
14. Oktober 200717 j Kein Problem. Immer gern. Nach erledigter arbeit schnapp ich mir jetzt den Hund und geh ruhigen Gewissens eni bisschen an der Ruhr spazieren. ;-) Mit freundlichen Grüßen, Cadpax
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.