Ich möchte, je nachdem wie der Name eines bestimmten Ordners ist, diesen Namen ändern. Also: Wenn Name = Ordner1 dann umbenennen in Ordner2 Wenn Name = Ordner2 dann umbennenen in Ordner1
Es handelt sich imemr um den gleichen Ordner der einfach per Batch den Namen wieder ändern soll. Leider bekomme ich das nicht hin. Versucht habe ich folgendes:
if exist [Pfad][Ordner1] REN Ordner1 Ordner2 if not exist [Pfad][Ordner1] REN Ordner2 Ordner1
und
if exist [Pfad][Ordner1] REN Ordner1 Ordner2 if exist [Pfad][Ordner2] REN Ordner2 Ordner1
Es klappt einfach nicht. Wie kann ich mein Vorhaben umsetzten?
Vielen Dank schonmal
2012-11-11T07:26:37Z
Ich habe jetzt mal den Code von „Egidius sieht wieder Ferkelchen“ genommen, unter der Annahme, dass nur ein Ordner in dem Verzeichnis besteht und dieser auch einen dieser beiden Namen hat:
if exist D:\Eigene Dateien\Ordner1 goto U1 REN Ordner2 Ordner1 goto ende :U1 REN Ordner1 Ordner2 :ende
Von der Logik her müsste es ja funktionieren. Tut es aber nicht. Es wird immer nur der Ordner1 in Ordner2 umbenannt. Nicht andersherum. Hab ich bei der Sprungmarke was verkehrt gemacht?
Robert2012-11-11T08:29:13Z
Beste Antwort
Die Sprungmarke ":U1" steht allein in einer Zeile. - Doppelpunkt und hier gefolgt von "U1". Der folgende Befehl steht in einer neuen Zeile.
Hier die Zeilen der Batch-Datei (Die Zeilen zwischen den beiden ### sind die Batch-Datei.): ### @echo off if exist "D:\Eigene Dateien\Ordner1" goto :U1 REN "D:\Eigene Dateien\Ordner2" Ordner1 goto :ende :U1 REN "D:\Eigene Dateien\Ordner1" Ordner2 :ende ###
Hinweise: Wenn ein Pfad Leerzeichen enthält sind die Anführungszeichen notwendig. Würde man keine Anführungszeichen eingeben würde bei der IF-Abfrage nur "D:\Eigene" verwendet werden und der Ordner existiert nicht. Dieses gilt auch wenn der Ordner selbst Leerzeichen enthält. Hier dazu ein Beispiel: REN "Test Ordner 1" "Test Ordner 2"
In meinem Test hat es gut funktioniert.
Die komplette Batchdatei müsste aber noch weitere Befehle enthalten.
- Überprüfen ob Ordner1 und Ordner2 existieren - FEHLER den man kann keinen Ordner in einen bereits existierenden Ordner umbenennen - Überprüfen ob keiner der beiden Ordner existiert - FEHLER man kann keinen nicht existierenden Ordner umbenennen
So kann da ja gar nicht funktionieren. Einmal angenommen, Ordner1 existiert und Ordner2 existiert nicht Dann geht folgendes ab:
if exist [Pfad][Ordner1]..............existiert nach Annahme REN Ordner1 Ordner2...............also wird hier umgenannt,
Jetzt haben wir eine neue Situation: Ordner 1 exisiert nicht mehr, aber Ordner 2 existiert
if not exist [Pfad][Ordner1]........ ist jetzt wahr REN Ordner2 Ordner1...............demnach wird auch hier umgenannt
Ergebnis (wie bei Start) Ordner1 existiert und Ordner 2 existiert nicht -------------------------------------------------
Also muss es zumindest so aussehen:
if exist [Pfad][Ordner1] goto U1 REN Ordner2 Ordner1 goto ende :U1 REN Ordner1 Ordner2 :ende ------------------------------------------------------- Dabei hast Du jetzt aber noch nicht das Problem abgehandelt, das auftritt, wenn in U1: der Ordner 2 schon existiert, dann geht der Renamebefehl nämlich auch mächtig in die Hose.
Ebenso probelmatisch ist es im andern Zweig, wo der Ordner 1 nicht existiert. Wenn da nämlich der Ordner2 auch nicht existiert, nützt Dir Dein REN-Befehl auch nicht viel.
if (exist Ord1 und exist Ord2) goto ende if (exist Ord1 und not exist Ord2) goto U1 if (not exist Ord1 und exist Ord2) goto U2 if (not exist Ord1 und not exist Ord2) ende goto ende :U1 ren o1 o2 goto ende :U2 ren o2 o1 goto ende :ende
Sicher, dass es nicht funktioniert? So wie ich das verstehe macht der erste Teil der Batch-Datei im Ergebnis garnichts: Ordner1 -> Ordner2 -> Ordner1 (das zweite REN würde ja auf den eben umbenannten Ordner ausgeführt werden). Das zweite Beispiel hat das gleiche Problem. Wenn das wirklich Dein vorhaben ist, muss Du den IF-Block so umbauen, dass er nur eine der beiden Aktionen ausführt. Hier mal als Pseudocode, meine Batch-Kentnisse sind leider schon etwas älter: IF exists(folder1) REN folder1 folder2 ELSE IF exists (folder2) REN folder2 folder 1 END IF END IF Allerdings wird hier Folder 1 Prioritisiert, wenn beide Ordner gleichzeitig existieren funktioniert das Script nicht (was es aber auch sonst nicht tun würde, Du kannst ja nicht einen ordner auf den namen eines bereits bestehenden ordners umbennen)
Falls Du dich hier nur verschrieben hast und das Problem ein anderes ist: Was ist denn die Fehlermeldung und mit welchem Betriebsystem arbeitest Du? Setz mal ein "PAUSE" in die letzte Zeile der Batch-Datei und überprüfe die Meldungen.
Das der Ordner nicht umbenannt wird, kann mehrere Ursachen haben: - Der Ausführer der Batch-Datei hat nicht die notwendigen Rechte - Der Zielname existiert schon - Der Zielname ist ungültig - Anführungszeichen vergessen bei Verzeichnis- / Dateinamen mit Leer- und Sonderzeichen - Der Ordner in dem die Dateien liegen (bzw der Ordner in dem Ordner2 angelegt werden soll) ist schreibgeschützt.
Beschreibe Doch dein Vorhaben nochmal etwas genauer, ich denke es liegt eher an der Planung, als an der Ausführung