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-Key: 76573

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

Printed on: April 18, 2024 at 03:04 o'clock

Member: TuXHunt3R
TuXHunt3R Dec 23, 2007 at 21:07:03 (UTC)
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.
Member: Dani
Dani Dec 23, 2007 at 21:07:44 (UTC)
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
Member: ebimail
ebimail Dec 23, 2007 at 21:10:38 (UTC)
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.
Member: future.former
future.former Dec 23, 2007 at 21:24:01 (UTC)
Goto Top
ich kann zwar an dieser stelle nicht weiterhelfen, aber wo finde ich eine komplette dokumentation über die batch-sprache ?
Member: bastla
bastla Dec 24, 2007 at 06:55:13 (UTC)
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
Member: bastla
bastla Dec 24, 2007, updated at Oct 18, 2012 at 16:32:50 (UTC)
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
Member: ebimail
ebimail Dec 24, 2007 at 12:59:15 (UTC)
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
Member: bastla
bastla Dec 24, 2007 at 13:11:25 (UTC)
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
Member: ebimail
ebimail Dec 26, 2007 at 15:07:01 (UTC)
Goto Top
Ich danke vielmals!

Liebe Grüße!