chgs2011
Goto Top

Batch bestimmte Dateitypen löschen (PROBLEM)

Hallo,

ich habe von "bastla" eine Batch-Funktion erlesen und versucht, die soweit auch ganz gut klappt, um Dateien zu löschen.

Mir ist aber ein Problem aufgefallen, hoffe mir kann jemand helfen.

Ich habe Dateien, die entweder *.txt oder z.B. *.txt.100 heißen, möchte also nun alle *.txt.zahl löschen, OHNE die *.txt ohne erweiterte Dateiendung.
Ist das möglich, wenn ja wie?

Batch bisher:
for /f "delims=" %%a in ('dir /b /s *.txt.*') do call del "%%a"

Danke

Content-ID: 229770

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

Ausgedruckt am: 08.11.2024 um 07:11 Uhr

Sheogorath
Sheogorath 14.02.2014 um 08:43:09 Uhr
Goto Top
Moin,

jetzt mal ungetestet:
 FOR /R %yourpath% %%a IN (*.txt.*) DO del %%a

Gruß
Chris
chgs2011
chgs2011 14.02.2014 um 08:58:52 Uhr
Goto Top
1.) läuft nicht
2.) mein Batch wollte ich erweitern oder verbessern, das läuft
3.) es muss über alle Verzeichnisse laufen
Sheogorath
Sheogorath 14.02.2014 um 09:10:29 Uhr
Goto Top
Moin,
wo liegt das Problem? Hast du mal ein Echo statt eines del-Befehls verwendet? Vielleicht muss %%a in Anführungszeichen, außerdem wird das für alle Unterverzeichnisse gemacht, als mehr geht nicht. Den Pfad angepasst? Den pfad in Anführungszeichen geschrieben?

Was wirft er denn aus, wenn du es aufrufst?

Gruß
Chris
colinardo
colinardo 14.02.2014 aktualisiert um 09:23:50 Uhr
Goto Top
Tach auch,
bei *.txt.* könnten auch solche ungewollten Dateien oder Pfade gematcht werden:
c:\DeinPfad\Datei.txt.100_test.xls

Probiers mal hiermit:
for /f "delims=" %%a in ('dir /B /S /A-D "C:\ordner" ^|findstr /I /R "txt\.[0-9]*$"') do del "%%a"
Grüße Uwe
chgs2011
chgs2011 14.02.2014 um 09:24:10 Uhr
Goto Top
DANKE Uwe, habe vermutet, dass ich die Endung nummerisch abfragen muss, wollte aber mal fragen ob es einfacher geht.

Das hier hat nun so geklappt, DANKE

for /f "delims=" %%a IN ('dir /b /s /a-d ^|findstr /i /r "txt\.[0-9]*$"') do del "%%a"
Endoro
Endoro 14.02.2014 um 10:22:01 Uhr
Goto Top
Hallo @colinardo, da fällt mir grad ein, dass z.B. der Editor 'UltraEdit' Dateien erstellt, die tatsächlich mit einem Punkt enden file., das aber nur als Kuriosum am Rande face-smile
Scroller
Scroller 27.03.2014 um 14:43:38 Uhr
Goto Top
Powershell:
dir | ? {$_.extension -notlike ".txt"} | % {rd $_.fullname}


Vieleicht wirs mal zeit für modernere technologien ? face-smile

Gruß
SC
colinardo
colinardo 27.03.2014 aktualisiert um 19:05:44 Uhr
Goto Top
Zitat von @Scroller:
Powershell:
dir | ? {$_.extension -notlike ".txt"} | % {rd $_.fullname}
Vieleicht wirs mal zeit für modernere technologien ? face-smile
@Scroller: wenn schon, dann aber gleich so:
dir "c:\temp" -File -Recurse | ?{$_.Name -match "\.txt\.\d+$"} | %{del $_.FullName}  
mit deiner Variante löschst du auch andere Dateien außer den *.txt.

Grüße Uwe
Scroller
Scroller 27.03.2014 aktualisiert um 18:57:15 Uhr
Goto Top
Hallo Uwe,

also "mein" rd ist ein alias auf remove-item, genauso wie "dein" del. Machen also genau dasselbe.

Was meinst Du mit "..auch andere Dateien außer den *.txt..."?
laut aufgabenstellung gibt es nur 2 Dateitypen.
Entweder * TXT oder irgenwas andere dass auf jedenfall weg muss.
Das wird erfüllt.
-> "die entweder *.txt ODER z.B. *.txt.100 heißen,"

Von mehr Bedingungen war nicht die Rede.
colinardo
colinardo 27.03.2014 aktualisiert um 19:07:56 Uhr
Goto Top
Zitat von @Scroller:
also "mein" rd ist ein alias auf remove-item, genauso wie "dein" del. Machen also genau dasselbe.
ja sorry, mein Fehler .. Brett vorm Kopf face-wink
Was meinst Du mit "..auch andere Dateien außer den *.txt..."?
laut aufgabenstellung gibt es nur 2 Dateitypen.
Entweder * TXT oder irgenwas andere dass auf jedenfall weg muss.
Das wird erfüllt.
-> "die entweder *.txt ODER z.B. *.txt.100 heißen,"

Zitat des TO:
möchte also nun alle *.txt.zahl löschen, OHNE die *.txt ohne erweiterte Dateiendung.
er möchte also nur die Dateien mit .txt.100 .txt.200 etc. gelöscht haben, bei dir löscht er auch alle anderen eventuell vorhandenen Dateien (*.jpg etc.) oder Ordner im Ordner.

Von Unterverzeichnissen ist auch keine Rede.
wenn du den Batchschnipsel vom TO gelesen hast hat er mit der Option /s beim dir-Befehl genau das vor.
und hier sagt er das auch in einem seiner Kommentare
3.) es muss über alle Verzeichnisse laufen

Grüße Uwe