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-ID: 210710

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

Ausgedruckt am: 08.11.2024 um 18:11 Uhr

Endoro
Endoro 06.07.2013 aktualisiert um 05:34:08 Uhr
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
bastla
bastla 06.07.2013 um 10:17:13 Uhr
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
76109
76109 06.07.2013 um 10:32:10 Uhr
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
bastla
bastla 06.07.2013 um 10:44:54 Uhr
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
76109
76109 06.07.2013 um 11:01:01 Uhr
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
Endoro
Endoro 06.07.2013 um 14:14:32 Uhr
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
bastla
bastla 06.07.2013 um 14:19:26 Uhr
Goto Top
@ Endoro
Mit
!extension:~1!
erhältst Du doch die gesamte Extension (nur ohne den Punkt davor) ...

Grüße
bastla
jan4321
jan4321 06.07.2013 um 17:48:56 Uhr
Goto Top
Super danke funktioniert face-smile
Endoro
Endoro 06.07.2013 um 18:24:04 Uhr
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