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-Key: 229770

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

Printed on: April 19, 2024 at 14:04 o'clock

Member: Sheogorath
Sheogorath Feb 14, 2014 at 07:43:09 (UTC)
Goto Top
Moin,

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

Gruß
Chris
Member: chgs2011
chgs2011 Feb 14, 2014 at 07:58:52 (UTC)
Goto Top
1.) läuft nicht
2.) mein Batch wollte ich erweitern oder verbessern, das läuft
3.) es muss über alle Verzeichnisse laufen
Member: Sheogorath
Sheogorath Feb 14, 2014 at 08:10:29 (UTC)
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
Member: colinardo
colinardo Feb 14, 2014 updated at 08:23:50 (UTC)
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
Member: chgs2011
chgs2011 Feb 14, 2014 at 08:24:10 (UTC)
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"
Member: Endoro
Endoro Feb 14, 2014 at 09:22:01 (UTC)
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
Member: Scroller
Scroller Mar 27, 2014 at 13:43:38 (UTC)
Goto Top
Powershell:
dir | ? {$_.extension -notlike ".txt"} | % {rd $_.fullname}


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

Gruß
SC
Member: colinardo
colinardo Mar 27, 2014 updated at 18:05:44 (UTC)
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
Member: Scroller
Scroller Mar 27, 2014 updated at 17:57:15 (UTC)
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.
Member: colinardo
colinardo Mar 27, 2014 updated at 18:07:56 (UTC)
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