[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.


Anmelden zum Antworten