leerzeichen in Verzeichniss .bat

  • Wollte nen verzeichnis löschen, das temp über ne stapelverarbeitungsdatei. Bei XP liegt die aber in C:\Dokumente und Einstellungen\........... , also die verzeichnisnamen mit leerzeichen.
    Hab schon :
    @Echo off
    rmdir /s /Q C:\Dokumente und Einstellungen\.....\Lokale Einstellungen\Temp
    md C:\Dokumente und Einstellungen\......\Lokale Einstellungen\Temp

    Aber dann macht er nur scheiss.
    Vielleichgt kennt sich jemand aus!

  • Das Problem liegt darin, dass Leerzeichen an der Kommandozeile als Trennzeichen für Parameter angesehen werden. Der Kommandointerpreter liest die Zeile also so:

    Kommando = 'rmdir'
    Parameter 1 = '/s'
    Parameter 2 = '/Q'
    Parameter 3 = 'C:\Dokumente'
    Parameter 4 = 'und'
    Parameter 5 = 'Einstellungen\.....\Lokale'
    Parameter 6 = 'Einstellungen\Temp'

    Zur Lösung dieses Problems hat man zwei Möglichkeiten:

    a) mit Anführungszeichen gruppieren:

    Zitat

    @Echo off
    rmdir /s /Q "C:\Dokumente und Einstellungen\.....\Lokale Einstellungen\Temp"
    md "C:\Dokumente und Einstellungen\......\Lokale Einstellungen\Temp"


    Dann gilt: Parameter 3 = 'C:\Dokumente und Einstellungen\.....\Lokale Einstellungen\Temp'

    b) überall die Kurznamen verwenden (aber nachschauen, welche Zahl hinter der Tilde '~' stehen muss!):

    Zitat

    @Echo off
    rmdir /s /Q C:\Dokume~1\.....\Lokale~1\Temp
    md C:\Dokume~1\......\Lokale~1\Temp


    Dann gilt: Parameter 3 = 'C:\Dokume~1\.....\Lokale~1\Temp'

    Letzteres geht natürlich bei erzeugenden Kommandos (wie mkdir=md) nur, wenn das zu erzeugende Objekt einen kurzen Namen hat. Hat er einen langen Namen, muss Methode a) verwendet werden. Abgesehen davon ist es sowieso zu empfehlen, um nicht mit den Nummern durcheinander zu kommen: Wenn man mal mehrere gleich beginnende Objekte gelöscht und neu erzeugt hat, dann könnten die Nummern nämlich anders zugeordnet werden.
    __

    Speziell beim Temporärverzeichnis kann man auch mit der Variablen %TEMP% arbeiten:

    Zitat

    @Echo off
    rd /s /Q %TEMP%
    md %TEMP%


    __

    Unter Windows 9x gab es auch das Programm 'deltree'; keine Ahnung, ob das in Windows 2000/XP noch verfügbar ist, vielleicht in einem Kompatibilitäts-Verzeichnis der Installations-CD. Dann wäre es nämlich möglich, die drei Zeilen abzukürzen durch

    Zitat

    @deltree -y %TEMP%


    __

    Man sollte diese Batch-Datei aber nicht beim Systemstart automatisch ausführen lassen! Es gibt nämlich Installer, die Systemdateien ersetzen müssen, welche gerade in Benutzung sind. Diese werden im TEMP-Verzeichnis abgelegt, und beim nächsten Neustart werden die Dateien dann aus dem TEMP- in das System-Verzeichnis kopiert, bevor Windows ganz hochfährt. Wird vorher allerdings das TEMP-Verzeichnis radikal gelöscht... :( ;(

  • Nur kurz: deltree gibt es nicht mehr, aber rmdir kann nun auch nicht leere unterverzeichnisse löschen. (rmdir /s /q) [zumindest auf meinem System, XP]

    g.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!