Gibt es die Möglichkeit mittels Excel-Liste Dateien aus einem Ordner zu löschen?

2 Antworten

Mit ein einfachen Makro in VBA lässt sich das bewerkstelligen.

Das Makro gibt man im VBA-Editor unter Entwicklertools ein, dort kann man unter Menü Einfügen ein neues Modul erstellen. Dann braucht man nur folgendes Makro einfügen und aufrufen oder direkt starten.

Sub DeleteFiles()

Dim endTable As Long
Dim fileToKill As String

endTable = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To endTable
    If i <> 4 Then
    'A4 (3.txt) wird ausgelassen.
        Kill (Cells(1, 1) & "\" & Cells(i, 1))
        'In Zelle A1 ist der Pfad
        'von A2 - A6 werden die Dateien geloscht.
    End If
Next

End Sub

So sieht es aus:

Bild zum Beitrag

Woher ich das weiß:Berufserfahrung
 - (Computer, Technik, Technologie)
HansWurst45  11.06.2022, 10:33

Sehr nice :)

Leider sind in den meisten Office-Installationen auf Arbeitsplatzrechnern die Makros durch die IT-Abteilung aus Sicherheitsgründen gesperrt.

1
geri3d  11.06.2022, 13:03
@HansWurst45

Ich weiß, in den Policies kann man so ziehmlich alles sperren. Masterclone zu kofigurieren war auch meine Arbeit. Was ich nicht kann aber sicher schnell kann ist das pachen von Kabeln und LWL. Früher habe ich neben der Arbeit als Techniker für Krankenhaustechnik (HSL, med. Gase, Kühlung) als Admin noch mit MLN's unter Novel Bandsicherung und Filebackup gemacht. Ach. Seit ich frühzeitig in den Ruhestand gegangen bin hab ich dann was neues endeckt. Für das Rote Kreuz bin ich sein 2015 tätig als Altenpfleger, Behindertenhilfe und Ersthelfer und später EA Bauaufsicht. Dabe ist es mir auch einmal unter gekommen, das ich einen Baustop verhängt habe weil der Planungsrat komplett versagte und eine UH (Unterm Hund) Ausführung vorgesehen hat im offenen Heim am Haydnplatz in Innsbruck aber schließich hat man die Bauweise geändert nach langen Hin und Her durch Intervention von Jasmin Haberl, die auch in der Zeitung gelandet ist dafür.

·geri3d· - Bing it

0
augsburgchris  11.06.2022, 17:53
@HansWurst45

Das sollten die sich bei uns msl einfallen lassen. Bei uns läuft fast alles über Makros.

0
Turaltay 
Fragesteller
 11.06.2022, 11:17

Vielen Dank für diese einfache aber effektive Vorgehensweise! Wird mir viel Arbeit ersparen.

1
geri3d  11.06.2022, 19:37
@Turaltay

Beachte, dass dir das Makro um die Ohren fliegt, wenn die Datei nicht existiert. Also solltest Du es so abändern:

Sub DeleteFiles()

On Error Resume Next
'Verhindert das ein Error geworfen wird.

Dim endTable As Long
Dim fileToKill As String

endTable = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To endTable
    If i <> 4 Then
    'A4 (3.txt) wird ausgelassen.
        fileToKill = (Cells(1, 1) & "\" & Cells(i, 1))
        Kill fileToKill
        'In Zelle A1 ist der Pfad
        'von A2 - A6 werden die Dateien geloscht.
    End If
Next

End Sub
1

auf Umwegen geht das.

Dazu benutzt die alte DOS-Funktionalität der Batch-Dateien.

Dort gibt es einen Befehl zum Löschen von Dateien. Der lautet 'DEL' <Dateiname.extention>

  1. du erzeugst in Excel die Liste der zu löschenden Dateien. Die Dateien sollten ohne Leerzeilen untereinander stehen
  2. wenn nicht alle Dateien im gleichen Verzeichnis sind, brauchst du auch die Pfade. An einfachsten schreibst du die jeweils in die Zelle links neben der mit dem Dateinamen oder gleich zusammen mit den Dateinamen
  3. Jetzt kommt der 'Trick'. Du schreibst in jeder Zeile der Liste in eine weitere Zeile diese Formel ="DEL """ & A1 & "\" & B1 &"""" Erklärung: der & Operator verkettet Texte; die gedoppelten Anführungszeichen (3 bei DEL und 4 am Ende der Formel) weisen Excel an eines davon als TextZeichen zu benutzen und nicht als Steuerzeichen zu interpretieren; in Spalte A stehend die Pfade, in Spalte B die Dateinamen mit Punkt Extension
  4. Du öffnest den Windows Editor (Notepad.exe)
  5. du markierst in Excel alle Zellen in denen deine Formel eine schöne Batch-Anweisung zusammengepuzzelt hat und kopierst diese mit <Strg><C>
  6. du fügst den kopierten Inhalt im Editor ein. Da dieser nur einfache Texte beherrscht (plain text) wird alles drumherum weggelassen und es werden nur die Buchstaben eingefügt. In Word ginge das nicht, denn Word ist zu schlau und macht wieder eine Tabelle daraus.
  7. jetzt speicherst du das als Datei in dem Verzeichnis in dem die Dateien stehen, bzw. in den Verzeichnis, von dem aus deine Pfade gültig sind. Beim speichern MUSST du im Speichern-Dialog die Option 'alle Dateien' auswählen und den Dateinamen mit .bat enden lassen
  8. Jetzt kannst du die Batch Datei mittels Doppelclick ausführen

btw. Umbenennen geht auch. Dann ist die Batch-Anweisung "REN <alter Dateiname> <neuer Dateiname>

Sei Vorsichtig, mit dem was du tust. Du kannst damit ohne weitere Rückfrage alle diene Daten ruinieren! Schau dir am besten vorher deine neue Batch Datei an (rechte Maustaste und <Bearbeiten>

https://de.wikipedia.org/wiki/Stapelverarbeitungsdatei

https://de.wikipedia.org/wiki/Liste_von_DOS-Kommandozeilenbefehlen