Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Batch älteste Datei in Verzeichnis löschen

Frage Entwicklung Batch & Shell

Mitglied: madmad

madmad (Level 1) - Jetzt verbinden

05.01.2009, aktualisiert 12:25 Uhr, 16435 Aufrufe, 32 Kommentare

Ich suche eine Möglichkeit (Batch oder evtl. auch Konsolenprogramm) um die älteste Datei in einen Ordner zu löschen.
Bis jetzt bin ich nur auf sehr komplexe Lösungen gestoßen, aber es muss doch auch eine einfacher Lösung geben oder?

Vielen Dank
32 Antworten
Mitglied: bastla
05.01.2009 um 12:57 Uhr
Hallo madmad!

Etwa so:
01.
@echo off & setlocal 
02.
set "Ordner=D:\Test" 
03.
for /f "delims=" %%i in ('dir /b /a-d /o-d "%Ordner%"') do set "Alt=%Ordner%\%%i" 
04.
echo del "%Alt%"
Grüße
bastla
Bitte warten ..
Mitglied: madmad
05.01.2009 um 13:11 Uhr
ah danke sowas in der art habe ich gesucht.
währe es auch Möglich den Script so zu machen das er alle Datein löscht auser die %anzahl& neusten?

Gruß
Bitte warten ..
Mitglied: bastla
05.01.2009 um 13:43 Uhr
Hallo madmad!

Möglich wäre es - soll ich?
01.
@echo off & setlocal 
02.
set "Ordner=D:\Test" 
03.
set Anzahl=3 
04.
 
05.
for /f "skip=%Anzahl% delims=" %%i in ('dir /b /a-d /o-d "%Ordner%"') do echo del "%Ordner%\%%i"
Grüße
bastla
Bitte warten ..
Mitglied: madmad
06.01.2009 um 10:23 Uhr
Hallo,

Super so habe ich mir das vorgestellt

Vielen Dank
Bitte warten ..
Mitglied: darex89
30.01.2009 um 10:25 Uhr
Hallo alle miteinander,

Ich bräuchte auch so eine batch datei und da bin ich auf diesen Thread gestoßen. Habe es gleich ausprobiert aber bei mir funktioniert das iwie nicht. Den Ordner habe ich im Script gewechselt, muss ich noch etwas wechseln?

schonmal Vielen Dank im Voraus.

Gruß,
Darex
Bitte warten ..
Mitglied: Biber
30.01.2009 um 11:20 Uhr
Moin Darex,

Habe es gleich ausprobiert aber bei mir funktioniert das iwie nicht.
Lässt sich dieses "iwie" noch iwie konkretisieren?

Kommt eine Fehlermeldung, fiept die Festplatte oder leuchtet eine gelbe LED?

Bitte gib am CMD-Prompt ein.
01.
Type [Lw:\pfad\DateinameDeinesBätschelchens.cmd] 
02.
[Lw:\pfad\DateinameDeinesBätschelchens.cmd]
Ersetze dabei [Lw:\pfad\DateinameDeinesBätschelchens.cmd] durch den Dateinamen, den Du gewählt hast.
Poste das Ergebnis.

Danke
Biber
Bitte warten ..
Mitglied: darex89
30.01.2009 um 11:35 Uhr
Also wenn ich die Batchdatei dann starte öffnet er ganz kurz das Fenster und schließt es sofort wieder. man sieht es kaum so schnell geht das. Aber er löscht die Datei nicht.

Wo soll ich das eingeben? Ich stehe gerade ein bißchen auf dem schlauch.
Bitte warten ..
Mitglied: bastla
30.01.2009 um 12:05 Uhr
Hallo darex89!

Wo soll ich das eingeben?
Wenn
Bitte gib am CMD-Prompt ein.
nicht verständlich war: Eingabe direkt an der Kommandozeile (das, was Du über "Start / Ausführen /cmd" starten kannst und zum Testen von Batchen auch sollst) ...

Grüße
bastla
Bitte warten ..
Mitglied: darex89
30.01.2009 um 12:45 Uhr
so sorry wenn ich etwas auf dem Schlauch gestanden habe.
Er gibt mir folgendes aus:

del "P:\test\P_daten_09-01-22_0200.xml"/o-d "P:\test"') do echo del "P:\test\%i"

hoffe ihr könnt mir da helfen.

Gruß
Darex
Bitte warten ..
Mitglied: Biber
30.01.2009 um 18:07 Uhr
Moin darex89,

bezieht sich das "Er gibt mir folgendes aus:" auf meine Bitte
Type [Lw:\pfad\DateinameDeinesBätschelchens.cmd]
-oder auf -
[Lw:\pfad\DateinameDeinesBätschelchens.cmd]
???
Lass mich doch meine Anweisung zur Fehler-reproduktion diesmal eindeutiger formulieren:
  • Bitte gib am CMD-Prompt (drücke "Start"-"Ausführen", gib ein cmd und drücke ENTER)
  • gib ein Type [Lw:\pfad\DateinameDeinesBätschelchens.cmd] und drücke ENTER
  • gib ein [Lw:\pfad\DateinameDeinesBätschelchens.cmd] und drücke ENTER
  • Ersetze dabei [Lw:\pfad\DateinameDeinesBätschelchens.cmd] durch den Dateinamen, den Du gewählt hast.
  • Markiere die Bildschirmanzeige von oben links bis untern rechts mit optischen Zeigegerät und drücke ENTER
  • Poste das Ergebnis, in dem Du es als Textausgabe mit "Einfügen" oder "Strg-V" in einen weiteren Kommentar vervielfältigst.

Grüße
Biber
Bitte warten ..
Mitglied: TaxMax
02.02.2009 um 08:07 Uhr
Ich hatte dasselbe Problem. Ich kenne mich mit der Art von Programmmierung nicht aus. Bei mir hat es funktioniert, als ich in beiden Vorschlägen das "echo " einfach gelöscht hatte. Laut Wikipedia dient Echo nur zum Anzeigen. Die vorstehenden Dateien zeigen nur an, welche Befehel kreirt wurden, fürhren Sie aber nicht aus. Kann an Win XP SP 3 PRO (mein Betriebssystem) liegen, weiß ich aber nicht. Also einfach Echo und Leerzeichen (davor oder danach) löschen und schon klappt es ganz wunderbar. Ich bin zufrieden.
Bitte warten ..
Mitglied: bastla
02.02.2009 um 12:16 Uhr
@TaxMax
Kann an Win XP SP 3 PRO (mein Betriebssystem) liegen, weiß ich aber nicht.
Ich kann Dich beruhigen - es liegt nicht am Betriebssystem ...

... sondern: "it's not a bug, it's a feature" (und das sogar ernst gemeint ) - das "echo" soll ein gefahrloses Testen ermöglichen, indem die Löschbefehle nur angezeigt, aber nicht ausgeführt werden (was ansonsten eigentlich immer dabei steht).

Wenn's dann vernünftig aussieht, so, wie Du es ohnehin gemacht hast: "echo" entfernen und den Dingen ihren Lauf lassen ...

Grüße
bastla
Bitte warten ..
Mitglied: darex89
03.02.2009 um 08:23 Uhr
@Biber
sorry aber war am we nicht da. also ich habe das jetzt so gemacht wie du gesagt hattest und da gibt er mir folgendes:

P:\>Type P:\test\loeschung.cmd
@echo off & setlocal

set "Ordner=P:\test"

for /f "delims=" %%i in ('dir /b /a-d /o-d "%Ordner%"') do set "Alt=%Ordner%\%%i
"

del "%Alt%"/o-d "%Ordner%"') do echo del "%Ordner%\%%i"
P:\>P:\test\loeschung.cmd
Ungültige Option - "o-d".

P:\>

kannst du damit was anfangen?

@TaxMax + Bastla
Ich habe die beiden "echo"´s gelöscht aber iwie klappt es immer noch nicht, es passiert einfach nichts. DAs sieht jetzt so aus:

@echo off & setlocal

set "Ordner=P:\test"

for /f "delims=" %%i in ('dir /b /a-d /o-d "%Ordner%"') do set "Alt=%Ordner%\%%i"

del "%Alt%"/o-d "%Ordner%"') do del "%Ordner%\%%i"

Hoffe ihr könnt mir weiter hin helfen.
Bitte warten ..
Mitglied: bastla
03.02.2009 um 08:50 Uhr
Hallo darex89!

Sollte eigentlich so aussehen:
01.
@echo off & setlocal 
02.
set "Ordner=P:\test" 
03.
 
04.
for /f "delims=" %%i in ('dir /b /a-d /o-d "%Ordner%"') do set "Alt=%Ordner%\%%i" 
05.
del "%Alt%"
Grüße
bastla
Bitte warten ..
Mitglied: darex89
03.02.2009 um 09:20 Uhr
Ah Super! Danke bastla.

Jetzt klappt es. danke schön euch allen!

Gruß Darex
Bitte warten ..
Mitglied: TaxMax
03.02.2009 um 10:40 Uhr
@ Bastler

Ah, ja ein Feature. Mich hat es fast einen Tag gekostet. Da ich, wie gesagt, keine Ahnung habe, musste ich mich ganz langsam in die Problemlage einarbeiten. Gibt es noch mehr Standards, die keiner schreibt, die aber gewußt werden sollten, um zu vermeiden, dass das Rad ein weiteres Mal erfunden wird? Und gibt es vielleicht eine (für Ahnungslose geeignete) Zusammenstellung?

MadTax
Bitte warten ..
Mitglied: bastla
03.02.2009 um 10:44 Uhr
Hallo TexMex!
@ Bastler

Ah, ja ein Feature. Mich hat es fast einen Tag gekostet.
Sorry - ich kann mich, abgesehen von diesem Beispiel hier - nicht daran erinnern, die Funktion eines derartigen "echo" bei von mir geposteten Batches nicht (zumindest im selben Thread) erklärt zu haben; insofern ein typischer Fall von Pech ...

Grüße
bastla
Bitte warten ..
Mitglied: Klaus20
29.07.2011 um 19:26 Uhr
Habe versucht mir aus den diversen Beiträgen eine Löschbatch zu schreiben - bekomme nur leider den Hinweis: "Parameterformat nicht korrekt"
Kann mir jemand sagen wo ich den Fehler eingebaut habe ??

set "Ordner=C:\Test\Sicherungen\Tag\"
set "Ordner2=B:\Sicherungen\Tag\"
set Anzahl=10
for /f "skip=%Anzahl% delims=" %%i in ('dir /b /a-d /o-d "%Ordner%"') do del "%Ordner%\%%i" >>%log%

if exist B:\Sicherungen\Tag\ goto :stick

:stick
for /f "skip=%Anzahl% delims=" %%i in ('dir /b /a-d /o-d "%Ordner2%"') do del "%Ordner2%\%%i" >>%log%

Gruß Klaus
Bitte warten ..
Mitglied: bastla
29.07.2011 um 19:45 Uhr
Hallo Klaus20!

Zum einen sehe ich nicht, dass %log% einen Wert erhielte, zum anderen gibt "del" ohnehin keine Daten aus, die in die Logdatei geschrieben werden könnten - allenfalls könntest Du eine zusätzliche Ausgabe erstellen:
01.
for /f "skip=%Anzahl% delims=" %%i in ('dir /b /a-d /o-d "%Ordner%"') do ( 
02.
    del "%Ordner%\%%i" 
03.
    echo %Ordner%\%%i 
04.
)>>%log% 
Außerdem ist es nicht sinnvoll, die Pfadangaben (in den ersten beiden Zeilen) mit einem "\" abzuschließen.

Schließlich: Die Prüfung auf "B:\Sicherungen\Tag" sollte eher so aussehen:
if not exist "%Ordner2%" goto :eof
Anstelle von "Batch-Ende" (:eof) kannst Du auch eine andere Sprungmarke angeben - in der derzeitigen Version ist es nämlich völlig egal, welches Ergebnis die Prüfung liefert, da auch ohne Sprung der Teil nach ":stick" ausgeführt wird.

Grüße
bastla

P.S. Bitte für das Posten von Batchschnipseln die passende Formatierung verwenden ...
Bitte warten ..
Mitglied: Klaus20
30.07.2011 um 09:18 Uhr
Hallo bastla,
vielen Dank für Deine Hilfe.
Habe momentan folgendes Phänomen.
Wenn ich loesch.bat im cmd Fenster laufen lasse bekomme ich keine Fehlermeldung.
Normalerweise lasse ich sie aber beim beenden eines 16bit Programmes (FoxPro) laufen und schon habe ich wieder die Fehlermeldung.
Alle anderen Sachen die in der Datei stehen werden einwandfrei ausgeführt
Prüfung ob Heute schon eine Sicherung erstellt wurde - Sicherung mit tzip - kopieren auf HDD und Stick - nur Löschen geht nicht.

Habe mir die Formatierungshilfe angesehen konnte Sie nur nicht umsetzen - gibt es eine Vorschau ??

Grüße Klaus
Bitte warten ..
Mitglied: bastla
30.07.2011 um 10:25 Uhr
Hallo Kalus20!

Vorschau gibt es - leider - nicht (mehr), aber es genügt, Code oder andere Inhalte, die möglichst unverändert dargestellt werden sollen, zwischen "<code>"- und "</code>"-Tags zu setzen.

Editieren kannst Du übrigens, bis der Beitrag geschlossen ist.
Hinsichtlich des (nicht gemeldeten) Fehlers habe ich leider keine Idee ...

Grüße
bastla
Bitte warten ..
Mitglied: Klaus20
02.08.2011 um 17:02 Uhr
Bekomme immer noch folgende Meldung:
->C:\Test\Sicherungen\Tag\ %i konnte nicht gefunden werden
Syntaxfehler
Vielleich hat ja doch noch einer eine Idee woran es liegen kann. Wofür steht den "%%i" ??

01.
set "Ordner=C:\Test\Sicherungen\Tag" 
02.
set Anzahl=10 
03.
for /f "skip=%Anzahl% delims=" %%i in ('dir /b /a-d /o-d "%Ordner%"') do ( 
04.
    del "%Ordner%\%%i" 
05.
    echo %Ordner%\%%i 
06.
)>>%log% 
Grüße Klaus
Bitte warten ..
Mitglied: bastla
02.08.2011 um 17:11 Uhr
Hallo Klaus20!
Wofür steht den "%%i" ??
In der Variablen %%i steht der Name jeder der gefundenen Dateien ...

Wenn Du kein "echo off" (und ggf am Ende zusätzlich eine Zeile mit "pause") verwendest, solltest Du ja den Ablauf der Schleife nachvollziehen können - wie sieht das denn da aus?

Grüße
bastla
Bitte warten ..
Mitglied: Klaus20
02.08.2011 um 19:31 Uhr
Hallo bastla,
wieder mal vielen Dank für Deine Antwort.

Parameterformat nicht korrekt. - C:\Test\Sicherungen\Tag
C:\Test\Sicherungen\Tag\%i konnte nicht gefunden werden (obwohl ich im Testverzeichnis 15 Datein habe)

Grüße Klaus

P.S.: Entschuldigung für meine Fragen aber wie man sieht habe ich von "bätch" nicht so viel Ahnung.
Bitte warten ..
Mitglied: bastla
02.08.2011 um 19:42 Uhr
Hallo Klaus20!

Wenn Du Dich (vor der Schleife einfügen) mit den folgenden Befehlen testweise langsam "vorarbeitest":
01.
dir C:\Test 
02.
dir C:\Test\Sicherungen 
03.
dir C:\Test\Sicherungen\Tag 
04.
pause
kannst Du feststellen, ob etwas mit einem der Verzeichnisse nicht stimmt (darauf würde die Fehlermeldung hindeuten) und dieses zB (vorübergehend) umbenennen ...

Grüße
bastla
Bitte warten ..
Mitglied: Klaus20
03.08.2011 um 10:44 Uhr
Hallo bastla,
egal was ich mache ich komme den Fehler nicht auf die Spur.
Habe folgendes herausgefunden:
1. Mit "Dir" wird alles korrekt angezeigt.
2. C:\Test\Sicherungen\Tag\%i konnte nicht gefunden werden ist nur bei C:\.. aber nicht beim Stick
3. Die Fehlermeldung "Parameterformat nicht korrekt" bekomme ich vom "Ordner" und vom "Ordner2"
4. Mit XP ist die Fehlermeldung auf Deutsch und unter Win7 ist sie auf Englisch.
5. Hast Du eine Ahnung ob die Befehle auch mit einer älteren Version (16bit) von Windows gehen ??
6. Ich rufe die bat Datei nähmlich aus einem 16bit Programm auf -
im cmd Fenster bekomme ich nur die Meldung von Punkt 2 ansonsten wird alles ausgeführt.

Hast Du eine Ahnung wie ich loesch.bat auf "alt" schreiben kann.

Grüße Klaus

P.S.: Mache es momentan mit DelAge32 %Ordner%\*.* 10 - es wurmt mich nur daß ich es mit Bordmitteln nicht hinbekomme.
Bitte warten ..
Mitglied: bastla
03.08.2011 um 11:44 Uhr
Hallo Klaus20!

Mit 2., 3. und der Frage nach "loesch.bat" kann ich nicht wirklich etwas anfangen ...

Zu 6.
Versuch es mit dem Aufruf per
cmd /c C:\Batchdatei.bat
Grüße
bastla
Bitte warten ..
Mitglied: Klaus20
03.08.2011 um 12:28 Uhr
Hallo bastla,

01.
set "Ordner=C:\Test\Sicherungen\Tag" 
02.
set "Ordner2=B:\Sicherungen\Tag" 
03.
set Anzahl=10 
04.
for /f "skip=%Anzahl% delims=" %%i in ('dir /b /a-d /o-d "%Ordner%"') do ( 
05.
    del "%Ordner%\%%i" 
06.
    echo %Ordner%\%%i 
07.
)>>%log% 
zu 2. die Meldung bekomme ich nach Aufruf von for /f ... aber nur mit %Orner% und nicht mit %Ordner%
zu 3. die Meldung bekomme zum Abschluß von for /f ... von beiden Ordnern
zu loesch.bat - ich meinte damit eine bat Datei mit Befehlen die auch mit älteren Windows gehen.
Ich glaube die Ausführung klappt nich da ich die batch Datei von einem 16 bit Programm aufrufe.

Mit cmd /c C:\Batchdatei.bat klappt leider auch nicht

Gruß Klaus
Bitte warten ..
Mitglied: bastla
03.08.2011 um 13:30 Uhr
Hallo Klaus20!

Leider fällt mir jetzt wirklich nix Sinnvolles mehr ein - eröffne besser einen neuen Thread, sodass auch andere darauf aufmerksam werden und mitraten können ...

Grüße
bastla
Bitte warten ..
Mitglied: Klaus20
03.08.2011 um 13:33 Uhr
Hallo bastla,

erst mal vielen Dank für Deine Mühe.

Grüße Klaus
Bitte warten ..
Mitglied: Movecorn
22.08.2014 um 09:31 Uhr
Hallo Zusammen,

Der folgende Befehl Funktioniert einwandfrei!

@echo off & setlocal
set "Ordner=P:\test"
for /f "delims=" %%i in ('dir /b /a-d /o-d "%Ordner%"') do set "Alt=%Ordner%\%%i"
del "%Alt%"

Meine Frage ist:

Kann man in diese Schleife einen bestimmten Dateityp einbauen, sodass in einem Ornder nur z.B. .vmk Dateien gelöscht werden und .vbk Dateien außen vorgelassen werden.

Vielen Dank
Bitte warten ..
Mitglied: Biber
22.08.2014, aktualisiert um 15:34 Uhr
Moin Movecom,

du kannst ja - was auch der Normalfall ist - beim DIR-Befehl eine Wildcard-Pattern wie zB "*.vmk" angeben.
Wenn ich es unter Beibehaltung des Stils erweitere in dem Schnipsel, dann:
01.
echo off & setlocal 
02.
set "Ordner=P:\test" 
03.
Set "endung=*.vmk" 
04.
for /f "delims=" %%i in ('dir /b /a-d /o-d "%Ordner%\%endung%"') do set "Alt=%Ordner%\%%i" 
05.
 
06.
REM Alternative: die älteste Datei zum Löschen merken 
07.
REM aber nur, wenn mindestens 2 neuere vorhanden sind 
08.
REM for /f "skip=2 delims=" %%i in ('dir /b /a-d /o-d "%Ordner%\%endung%"') do set "Alt=%Ordner%\%%i" 
09.
 
10.
del "%Alt%"
Ich habe noch eine kleine Erweiterung eingebaut - dein jetziger Schnipsel löscht zwar immer die älteste Datei (works as designed).
Allerdings würde er das auch tun, wenn die älteste Datei gleichzeitig die einzige ist - das wäre mir zu heiss bei einem unbeaufsichtigen Batch.

Grüße
Biber
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst Ordner per Batch verschieben, Datei kopieren (2)

Frage von Shape.Shifter zum Thema Batch & Shell ...

Batch & Shell
gelöst BATCH ini Datei Datei auslesen (2)

Frage von Juergen42 zum Thema Batch & Shell ...

Batch & Shell
Batch: Word Datei kopieren und umbennen (9)

Frage von ExcelNoob177 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...