ebimail
Goto Top

Batch - Ordner löschen - mit Platzhalter

Hey,

da hätte ich noch eine Frage,

könnte man folgenden Code nicht einfacher gestalten? Wieso kann man keine Ordner löschen indem man sie auch mit Platzhaltern identifiziert?

Hier ist mein alternativ Code:
@echo off
Setlocal EnableDelayedExpansion

FOR /F %%i in ('dir /b "alte_Sicherung*"') do (  
set Name=%%i && del !Name! /F /S /Q && RMDIR !Name!/S /Q
)

Liebe Grüße

Content-ID: 76573

Url: https://administrator.de/contentid/76573

Ausgedruckt am: 23.11.2024 um 01:11 Uhr

TuXHunt3R
TuXHunt3R 23.12.2007 um 22:07:03 Uhr
Goto Top
Solche Sachen habe ich auch schon probiert, bei mir hat es auch nie geklappt. Musste das Ganze auch immer mit einem dir und einer FOR-Schleife lösen. Schick doch mal eine PN an Biber oder bastla [edit] mit einem Link zu diesem Beitrag drin [/edit], eventuell wissen unsere allseits geliebten Batch-Götter mehr.
Dani
Dani 23.12.2007 um 22:07:44 Uhr
Goto Top
Abend ebimail,
wenn du nur Verzeichnisse löschen möchtest, kannst du doch den del - Befehl vergessen.

So sollte es auch gehen:
@echo off
for /f %%i in ('dir /b "alte_Sicherung*"') do rmdir /s /q "%%i"  

Grüße
Dani
ebimail
ebimail 23.12.2007 um 22:10:38 Uhr
Goto Top
Ich möchte aber neben den Verzeichnissen auch die Dateien löschen, deswegen beide Befehle.

Liebe Grüße


Würde mich freuen wenn jemand noch eine Idee hat.
future.former
future.former 23.12.2007 um 22:24:01 Uhr
Goto Top
ich kann zwar an dieser stelle nicht weiterhelfen, aber wo finde ich eine komplette dokumentation über die batch-sprache ?
bastla
bastla 24.12.2007 um 07:55:13 Uhr
Goto Top
Hallo ebimail!

Mit der von Dani vorgeschlagenen Zeile werden natürlich auch die in den zu löschenden Verzeichnissen enthaltenen Dateien gelöscht - bitte einmal testen.

Der Ordnung halber vielleicht noch der Hinweis, dass mit dem zusätzlichen "dir"-Schalter "/ad" die Schleife nur Verzeichnisse behandelt, was Du einfacher auch mit "for /d" haben kannst:
for /d %%i in ("alte_Sicherung*.*") do rd /s /q "%%i"  

Grüße
bastla
bastla
bastla 24.12.2007, aktualisiert am 18.10.2012 um 18:32:50 Uhr
Goto Top
Hallo future.former!

Als Ansatzpunkt kannst Du in der Windows-Hilfe nach dem Stichwort "cmd" suchen (vor allem auch die "Ergebnisse der Volltextsuche" beachten).

Hier im Forum findest Du neben einigen Links unter diesen Kommentar (mit Zusatznutzen in Form eines Batches zum Aufruf der Windows-Hilfe von der Kommandozeile) von Biber, dessen einschlägige Tutorials ich ebenfalls ausdrücklich empfehlen möchte.

Grüße
bastla
ebimail
ebimail 24.12.2007 um 13:59:15 Uhr
Goto Top
for /d %%i in ("alte Sicherung*.*") do rd /s /q "%%i"   

Wohw! Vielen Dank!

1) warum geht das nur mit *.* und warum reicht nicht *

2) warum ist hier kein "delims=" nötig?

3) Vll. könnt ihr mir ja noch erklären warum ich bei meinem Code immer das Problem hatte, das am Ende des "gefundenen Verzeichnisses" immer noch ein Leerzeichen dran war, welches ich erst wegmachen musste um den del. befehl nutzen zu können?

FOR /F "delims=" %%i in ('dir /b "alte Sicherung*"') do (  
set Name=%%i && del "!Name:~0,27!" /F /S /Q && RMDIR "!Name:~0,27!" /S /Q  
)

Liebe Grüße
bastla
bastla 24.12.2007 um 14:11:25 Uhr
Goto Top
Hallo ebimail!

1) Sollte auch mit * funktionieren, aber wenn nichts gegen *.* spricht, tendiere ich zu dieser Schreibweise.

2) Hier wird kein "for /f" verwendet.

3) Versuch es mit zusätzlichen Anführungszeichen - etwa so:
FOR /F "delims=" %%i in ('dir /b "alte Sicherung*"') do (  
set "Name=%%i" && del "!Name:~0,27!" /F /S /Q && RMDIR "!Name:~0,27!" /S /Q  
)
Diese (undokumentierte) Schreibweise
set "Variable=Wert"  
habe ich (natürlich) erstmals bei Biber gesehen und verwende sie fast ausnahmslos. Ihr Vorteil ist, dass Werte mit enthaltenen (inklusive am Ende befindlichen) Leerstellen "zusammengehalten" werden, ohne die Anführungszeichen ebenfalls in die Variable übernehmen zu müssen, was gelegentlich (zB für eine "token"-Zerlegung) durchaus nützlich sein kann. Negative Nebenwirkungen sind mir bisher nicht aufgefallen.

Grüße
bastla
ebimail
ebimail 26.12.2007 um 16:07:01 Uhr
Goto Top
Ich danke vielmals!

Liebe Grüße!