jan4321
Goto Top

Batch Datei löschen nur auf Dateiendungen beziehen

Hi,
ich hab hier gerade eine Software, die gesplittete Zip files mit daten erzeugt.

die müssen entpackt werden und danach lösche ich die Zip.

Die haben allerdings das formart .z001 - .zXXX

Meine for schleife sieht mom so aus:

 FOR /F "delims=*" %%B IN ('dir /b /s /a-d *.z*') do del /F "%%B"  

Das funktionirt auch gut, nur leider gibt es manchmal *.z* auch im datei namen, welche ich entpackt habe, was dann natürlich die Datei mit löscht.

Kann ich nur nach Dateiendungen Filtern, oder hat jemand einen anderen Lösungsansatz?

Content-Key: 210710

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

Printed on: April 23, 2024 at 08:04 o'clock

Member: Endoro
Endoro Jul 06, 2013 updated at 03:34:08 (UTC)
Goto Top
Hallo,

du könntest prüfen, ob der erste Buchstabe der Extension ein "z" ist:
set "extension=%%~xB"  
if /i "!extension:~2!"=="z" del "%%~B"  

Dazu muss in der for Schleife delayed expansion eingeschaltet werden.

lg
Member: bastla
bastla Jul 06, 2013 at 08:17:13 (UTC)
Goto Top
... oder sicherer, indem Du die gesamte Extension prüfst:
FOR /F "delims=*" %%B IN ('dir /b /s /a-d *.z*^|findstr /ie "\.z[0-9][0-9]{0-9]"') do del /F "%%B"
Grüße
bastla
Mitglied: 76109
76109 Jul 06, 2013 at 08:32:10 (UTC)
Goto Top
Hallo Endoro!

Müsste es bei Extension z.B. ".z001" nicht so heißen?
if /i "!extension:~1,1!"=="z" del "%%~B"  

Gruß Dieter
Member: bastla
bastla Jul 06, 2013 at 08:44:54 (UTC)
Goto Top
@ Dieter

Richtig face-smile - aber damit würden zB entpackte ".zkf"- oder ".zpd"-Dateien immer noch auf der Strecke bleiben ...

Grüße
bastla
Mitglied: 76109
76109 Jul 06, 2013 at 09:01:01 (UTC)
Goto Top
Hallo bastla!

Mir ging's nur um eine Richtigstellung...

Das Deine Lösung die sichere wäre, steht dabei ganz außer Frageface-wink


Gruß Dieter
Member: Endoro
Endoro Jul 06, 2013 at 12:14:32 (UTC)
Goto Top
Ja, stimmt, die erste:
set "extension=%%~xB"  
if /i "!extension:~1!"=="z" del "%%~B"  

oder auch so:
FOR /F "delims=" %%B IN ('dir /b /s /a-d *.z*^|findstr /i "\.z[0-9][0-9]*$"') do del "%%~B"  


lg
Member: bastla
bastla Jul 06, 2013 at 12:19:26 (UTC)
Goto Top
@ Endoro
Mit
!extension:~1!
erhältst Du doch die gesamte Extension (nur ohne den Punkt davor) ...

Grüße
bastla
Member: jan4321
jan4321 Jul 06, 2013 at 15:48:56 (UTC)
Goto Top
Super danke funktioniert face-smile
Member: Endoro
Endoro Jul 06, 2013 at 16:24:04 (UTC)
Goto Top
Zitat von @bastla:
@ Endoro
Mit
!extension:~1!
> 
erhältst Du doch die gesamte Extension (nur ohne den Punkt davor) ...

Hab ich das verschlimmbessert face-sad

Es geht auch nicht wirklich gut so,
lieber bei Regex bleiben face-smile

lg