[Gelöst] Batch-Programmierung: "\" aus Pfad-Ausgabe löschen
-
Hi mal wieder,
folgende test.bat soll zunächst alle Unterordner im Format "Ordner\cd3" finden und dann einen neuen Verzeichnisnamen im Format "Ordner (cd3)" ausgeben.
FOR /F "tokens=*" %%I IN ('DIR /B /S cd3') DO ECHO %%~pI (cd3^)
Leider übergibt die Variable %~pI am Ende der Zeile ein "****", so dass die Ausgabe "Ordner\ (cd3)" lautet.
Wie kann ich diesen ungewollten "****" entfernen?
Danke im voraus!
PS: Halte mich absichtlich knapp, um den Rahmen nicht zu sprengen. Bei Bedarf kann ich jedoch das gesamte Projekt samt Ordnerstruktur erläutern.
-
Kurz zur Erläuterung der Code-Zeile (für die, die mitlernen wollen):
DIR /B /S cd3
-Sucht rekursiv (/S) nach Ordner mit dem Namen "cd3" und übergibt nur die Verzeichnisnamen (/B)
-Ausdruck steht in "''", um die Ausgabe an die FOR-Schleife zu übergeben."tokens=*"
-Da auch Leerzeichen in den Verzeichnisnamen enthalten sind.
%%~pI (cd3^)
-Der Zusatz "~p" extrahiert aus der Variable %I nur den Pfad.
-Diesen soll " (cd3)" angehängt werden.
-Die ")" muss mit "^" escapet werden, da der Ausdruck in einer FOR-Schleife steht.
-
Habe nun eine Lösung gefunden:
SETLOCAL EnableDelayedExpansion FOR /F "tokens=*" %%I IN ('DIR /B /S cd3') DO ( SET TEMP=%%I ECHO !TEMP:\cd3= (cd3^)! )
Der Trick liegt in der 1. Zeile. Dadurch kann die Laufvariable %%I, innerhalb/während der FOR-Schleife mit "!" statt "%" referenziert werden.
Der Wert wird in die Variable TEMP gespeichert und anschließend manipuliert.