Server2003: Löschen mit Wildcards in Batch

Moin Experten,

ich stehe grade etwas auf dem Schlauch. Ich schreibe eine DOS-Batch, die bestimmte Dateien (mit 7zip) archiviert und dann löscht.

Das Problem: das DOS-Namens-Schema! Das Verzeichnis sieht z.B. so aus:

debug.log
debug.log10
debug.log11
debug.log12
error.log
error.loga
error.logb
error.logc

(Ich habe keinen Einfluss auf die Benamsung der Dateien, das macht eine Anwendung)

Mein Script soll jetzt nur die Dateien erfassen, bei denen hinter dem „log“ noch etwas steht. Bei 7zip ist das kein Problem: „*.log?*“. Der del Befehl haut aber bei dieser Filemask alle Dateien weg!

Jemand eine Idee? Zum Beispiel einen Ersatz für den „del“ Befehl, der wie 7zip einen eigenen Parser mitbringt, der sich nicht an diesem prähistorischen 8+3 Namensschema orientiert?

Danke im Voraus.

Gruß
Stefan

Ok, habe eine Lösung gefunden:

for %%A in (\*.log\*) do if not %%~xA==.log del %%A

Elegant ist aber anders. Wenn also noch jemand eine bessere Lösung kennt: immer her damit.

Gruß
Stefan

Hi Stefan,

Ok, habe eine Lösung gefunden:

for %%A in (*.log*) do if not %%~xA==.log del %%A

Elegant ist aber anders. Wenn also noch jemand eine bessere
Lösung kennt: immer her damit.

Du hast m.E. eine aus Sicht von DOS Batches sehr elegante Lösung gefunden. Eine Andere hätte darin bestanden, das 4. Zeichen der Extension auf nicht leer zu testen (SET hätte eine solche Mäglichkeit über den ~ Operator).

Aber Hand aufs Herz: die Batch Sprache ist ein über 30 Jahre zusammengestiefeltes Sammelsurium von abstusen Hilfskonstruktionen, die versuchen, ein von Beginn ab ausgesprochen schwaches Konzept irgendwie zu verschlimmbessern.

Wenn Du elegantere Dinge tun willst, lass die Batches Bacthes sein und arbeite Dich in den WSH ein. Da dieser ab XP zum Standardlieferumfang aller Windows Versionen gehört, kann man Batches m.E. zu den Akten legen.

Armin.