kugelschreiber
Goto Top

Batch - Ordner samt Inhalt aus Liste löschen

Hallo Ihr Lieben

Ich möchte gerne eine Batch schreiben, welche Dateien in Ordnern löschen soll.
Die Ordner erhält die Batch aus einer TXT Datei "beispiel.txt", welche dort die Ordner als absolute Pfade, eingeschlossen in Hochkommas und pro Zeilen getrennt enthält.
Also zum Beispiel:

"c:\Dokumente und Einstellungen\Ordner 1\"
"c:\Dokumente und Einstellungen\noch_ein_ordner\"
usw.

In der Batch selbst, habe ich versucht durch den u.g. Thread zu adaptieren:

for /f "tokens=1" %%i in ("h:\TEST\backup.txt") do call :loop1 %%i

:loop1

del %1

Jedoch sagt mir die Konsole:

C:\Dokumente konnte nicht gefunden werden

Wahrscheinlich nur ein kleines Problemchen für Euch. aber nach mehreren Recherchen habe ich nur diesen Thread gefunden, der mir wenigstens den Weg zeigte.

Für Eure Hilfe bin ich Euch dankbar!


Gruß Kuli
Kommentar vom Moderator Biber am 17.05.2010 um 12:41:04 Uhr
Beitrag verschoben von "Tools & Utilities" nach "Batch & Shell".

Content-ID: 142945

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

Ausgedruckt am: 24.11.2024 um 20:11 Uhr

bastla
bastla 17.05.2010 um 12:09:07 Uhr
Goto Top
Hallo kugelschreiber!

Falls nur gelöscht werden soll, ist das Unterprogramm gar nicht nötig.
Wenn Du den Dateinamen der Textdatei unter Anführungszeichen stellst, wird dieser als Text interpretiert - damit dies nicht geschieht, noch ein "usebackq" verwenden.
Um auch noch die Zerlegung anhand der Leezeichen im gelesenen Dateinamen zu vermeiden, per "delims=" festlegen, dass es kein Trennzeichen gibt und daher die Zeile am Stück als %%i zur Verfügung stehen soll.

Daher sollte es so funktionieren:
for /f "usebackq delims=" %%i in ("h:\TEST\backup.txt") do del %%i
Grüße
bastla
kugelschreiber
kugelschreiber 17.05.2010 um 12:34:13 Uhr
Goto Top
Hallo bastla!

Erst einmal vielen Dank! Das Script löscht schon mal die Dateien, will aber auch laut Konsole:

cf4cf6c38895c4e09bb5e728fcbe142c

etwas bestätigt haben. Wenn dies die Frage nach dem Löschen des Ordner ist, dann soll dies ausdrücklich nicht passieren, sondern es sollen nur die Dateien und Ordner/Unterornder welche in den angegegbenen Ordner aus der TXT Datei drin steht gelöscht werden.

Vielen vielen Dank!
77559
77559 17.05.2010 um 12:52:59 Uhr
Goto Top
Zitat von @bastla:
Daher sollte es so funktionieren:
for /f "usebackq delims=" %%i in ("h:\TEST\backup.txt") do del %%i
> 
Hallo bastla,

wenn es um die von Kugelschreiber genannten Beispiele "c:\Dokumente und Einstellungen\Ordner 1\" geht, sollte man aber besser Del "%%i" nehmen.

@kugelschreiber, um die Abfrage zu verhindern, nimm die Option /Q hinzu (ggfs auch noch /F und /A)

Gruß
LotPings
kugelschreiber
kugelschreiber 17.05.2010 um 13:52:07 Uhr
Goto Top
Ihr seid einfach Klasse!

Danke. Hat funktioniert.

Bevor ich aber hier Schließe, möchte ich natürlich noch wissen, wo der Unterschied liegt?

1) Ich kannte die Option /q, die besagt, dass ich das Löschen nicht bestätigen muss, aber was ist dann /Q oder ist gross klein egal bei Schaltern?
2) sollte man besser Del "%ii" nehmen -> Hatte er doch oder habe ich Tomaten auf den augen?

Danke Euch vielmaß!
bastla
bastla 17.05.2010 um 14:05:33 Uhr
Goto Top
Hallo kugelschreiber und LotPings!
1) Ich kannte die Option /q, die besagt, dass ich das Löschen nicht bestätigen muss, aber was ist dann /Q oder ist gross klein egal bei Schaltern?
Macht in Batch grundsätzlich keinen Unterschied ...
2) sollte man besser Del "%ii" nehmen -> Hatte er doch oder habe ich Tomaten auf den augen?
Unter der Voraussetzung, dass die Aussage
als absolute Pfade, eingeschlossen in Hochkommas und pro Zeilen getrennt
so, wie in den beiden Beispielzeilen oben dargestellt, gemeint ist, sind die Anführungszeichen um %%i herum nicht nötig (die Schreibweise mit 2 * "%" und 1 x "i" allerdings doch face-wink) ...

Grüße
bastla
77559
77559 17.05.2010 um 14:56:03 Uhr
Goto Top
Zitat von @bastla:
als absolute Pfade, eingeschlossen in Hochkommas und pro Zeilen getrennt
so, wie in den beiden Beispielzeilen oben dargestellt, gemeint istt, sind die Anführungszeichen um %%i herum nicht
nötig (die Schreibweise mit 2 * "%" und 1 x "i" allerdings doch face-wink) ...

OK, ok - einigen wir uns auf "%%~i" dann funktioniert es in jedem Fall face-wink

Gruß
bastla
bastla 17.05.2010 um 14:59:29 Uhr
Goto Top
OK, ok - einigen wir uns auf "%%~i" dann funktioniert es in jedem Fall face-wink
Damit kann ich leben ... face-wink

Grüße
bastla