Temporäre Office 2007 Dateien rekursiv löschen

Mitglied: lordraydon

lordraydon (Level 1) - Jetzt verbinden

07.01.2009, aktualisiert 14.01.2009, 8111 Aufrufe, 10 Kommentare

~$*.xlsx und so weiter in einer vorhandenen Ordnerstruktur löschen

Hallo alle Zusammen.

Ich habe ein kleines Problemchen...
Und zwar haben wir bei uns in der Firma eine riesige Ordnerstruktur, die auf einem DFS-System abgelegt ist.
Viele User öffnen und speichern dort massig Office-Dateien, wo es immer wieder vor kommt, dass die Dateien nicht ordnungsgemäß abgespeichert werden. Dadurch sammeln sich in den jeweiligen Ordnern sehr viele temporäre Dateien an, die natürlich auch Speicherplatz weg nehmen.
Ich habe nun schon versucht, die Dateien per Windows-Suche aufzulisten und zu löschen, allerdings findet die Windows-Suche die Dateien nicht. Eine einzelne Datei, kann ich damit suchen und finden, wenn ich den exakten Namen inklusive Dateierweiterung angebe. Ich hingegen möchte aber an einer Stelle einen Platzhalter eingeben, über den ich dann alle Dateien finden kann. (z.B. ~$*.xlsx um alle temporären Excel-Dateien zu finden)
Da dies aber aus irgendeinem Grund nicht funktioniert, habe ich versucht das über die Kommandozeile unter Windows zu machen
Dieser Befehl löscht rekursiv, also im aktuellen Ordner inklusive der Unterordner, alle Dateien mit der Dateierweiterung ".tmp".
Das funktioniert auch soweit, allerdings hier wieder nicht mit den Platzhaltern wie ich es mir vorstelle: "~$*.xlsx"
Ich würde ja auch gerne her gehen und die Dateierweiterung weglassen, aber dies ist nicht möglich, da wir bei uns Programme einsetzen, die auch "~$" Dateien erstellen, die für uns aber von wichtigkeit sind.

Hat vielleicht jemand hier im Forum eine Idee, wie wir diese Dateien einfach löschen können, ohne in den jeweiligen Ordner zu gehen und die per Hand zu löschen???

Ich bin über jede Hilfe dankbar.

Besten Dank und Beste Grüße,
Christian
Mitglied: Biber
07.01.2009 um 16:55 Uhr
Moin lordraydon,

des Rätsels Lösung ist nicht so furchtbar schwierig.
Einige dieser temporären "~$*.xlsx"-Dateien sind "unsichtbar", also haben das Dateiattribut "Hidden".
Deshalb werden sie sowohl vom "normalen" DIR-Befehl wie auch beim DEL-Befehl mit Wildcards ignoriert.
Bei einem "namentlichen" Ansprechen werden sie gefunden, wie Du ja auch geschildert hast.

Abhilfe / Strategie in einem Batch-Zweizeiler:
  • eine Runde für eventuell vorhandene ~$*.xlsx-Dateien mit "Del x:\startordner\~$*.xlsx"
  • für die Dateien mit derselben Wildcard-Namensgebung UND Attribut Hidden

Probiere vorher mal als proof-of-concept am CMD-Prompt ein

Grüße
Biber
Bitte warten ..
Mitglied: lordraydon
07.01.2009 um 17:59 Uhr
Hallo Biber,

Habe das eben mit einem Testordner bei mir auf der Festplatte getestet und habe leider folgende Fehlermeldung bekommen :

Kannst du mir mal irgendwie erläutern, was dieser Befehl genau macht und für was die einzelnen Attribute stehen??

Besten Dank für deine schnelle Hilfe,
Christian

[EDIT]

Inhalt der Bacht.cmd ist

Bitte warten ..
Mitglied: Biber
07.01.2009 um 18:16 Uhr
Moin lordraydon,

CMD-Befehle (unter anderem FOR-Anweisungen) lassen sich als Einzelanweisungen direkt vom CMD-Prompt aus abfeuern ODER als Batchdatei (Endung *.cmd oder *.bat) als Mehrere-Anweisungen-in-einem-Rutsch ausführen.

Die dynamischen FOR-Variablen %i, %j usw. werden am CMD-Prompt mit einem Prozentzeichen (%i) geschrieben, in Batchdateien mit zwei Prozentzeichen (%%i, %%j, ...)
Daher Dein Syntaxfehler. Verdoppele die %-Zeichen in Deiner Bacht.cmd.

[am Cmd-Prompt]
FOR /F "delims=" %i in ('DIR /s /b /ah C:\Users\cra\Desktop\test\~$*.xlsx') do @echo del "%i"
[in einer .cmd-/.bat-Batchdatei:]
FOR /F "delims=" %%i in ('DIR /s /b /ah C:\Users\cra\Desktop\test\~$*.xlsx') do @echo del "%%i"

Der Befehl
  • führt ein DIR-Kommando aus auf die Wildcards "~$*.xlsx" im angegebenen Verzeichnis
  • und bezogen nur auf die Dateien mit Attribut Hidden (Schalter "-ah")
  • die gefundenen Dateien werden einzeln angefasst durch die FOR /F-Anweisung
  • "delims=" bewirkt die ordnungsgemäße Verarbeitung auch von Ordnern/Dateien mit "Leerzeichen im Namen"
  • diese Dateinamen werden an das do @echo del "%%i" übergeben.

Versuche es erstmal so weit und poste dann eventuelle Restfragen.

Grüße
Biber
Bitte warten ..
Mitglied: lordraydon
07.01.2009 um 18:31 Uhr
Hallo Biber,

Erstmal vielen Dank für deine schnelle und gute Hilfe.
Mein vollstes Respekt, für deine Kenntnisse in der Kommandozeilen-Umgebung von Windows.

Ergebnis der Batch sieht nun folgendermaßen aus:

Werde das nun noch auf dem DFS mit ein paar Testdateien versuchen, bevor ich es wirklich auf die "echten" Dateien loslasse ;)

Werde die Ergebnisse bis Ende der Woche dann hier veröffentlichen.

Nochmals vielen dank und beste Grüße,
Christian
Bitte warten ..
Mitglied: lordraydon
07.01.2009 um 18:51 Uhr
Hallo Biber,

Ich habe doch noch ein kleines Problem... Zumindest hoffe ich das es klein ist^^

Und zwar sind auf dem Server anscheinend die Pfade etwas zu lang, weswegen die Kommandozeile folgende Fehlermeldung ausgibt:

Ich schätze mal, dass er dann in diesen Verzeichnissen den Befehl anwenden kann.
Kann ich das irgendwie umgehen, oder ist die Kommandozeile an diese Stelle schlicht weg zu "schwach" auf der Brust???

Vielen Dank und noch einen schönen Abend,
Christian
Bitte warten ..
Mitglied: Biber
07.01.2009 um 19:08 Uhr
Moin lordraydon,

nein, das ist kein CMD.exe-spezifischer Schwachpunkt, sondern ein allgemeines Redmonder Praktikanten-und-Pfadlängen-Problem.
Diese PraktikantInnen konnten sich damals nichts vorstellen, was länger sein kann als 254 mm oder Zeichen.
Und ziemlich alle M$-Anwendungen werden auch noch bei soooooooooo langen Datei/Verzeichnis-Namen die Grätsche machen, wenn ein Windows-Betriebssystem mit einer Versionsnummer 35.x auf den Markt geworfen wird.

In diesem Fall kannst Du den Pfad z.B. über einer Subst- oder ein Net use-Kommando verkürzen.
Beispiele sind auch hier im Forum zu finden[Forumssuche "Pfadlänge"].
Deshalb nur angedeutet:
net use z: "\\einServer\einShare\Users\cra\Desktop\test\Neuer Ordner\Neuer Ordner"
-oder-
subst z: "C.\Users\cra\Desktop\test\Neuer Ordner\Neuer Ordner"

--> dann kannst Du so einen RattenschAwanz wie "...\Users\cra\Desktop\test\Neuer Ordner\Neuer Ordner" als Laufwerk Z: ansprechen.
[ das "A" in RattenschAwanz ist kein Tippfehler. sondern ein Unterlaufen der Forumsregeln. Sonst würde angezeigt. "Ratten###" ]

Grüße
Biber
Bitte warten ..
Mitglied: lordraydon
07.01.2009 um 19:32 Uhr
Hallo Biber,

Auch hier nochmals "Danke"... Dann werde ich die Ergebnisse der Batch-Datei mit "batch.cmd >> log.txt" zwischenspeichern. Somit kann ich ja sehen, welche Verzeichnisse definitiv zu lang sind und kann dann her gehen, mir ein Netzlaufwerk anlegen, das zu den "fehlenden" Pfaden verweist und dort nochmals die Batch ansetzen lassen.

Teste das weiterhin und melde mich dann wieder.

Vielen Dank für die ganze Hilfe und dann einen schönen Abend,
Christian
Bitte warten ..
Mitglied: lordraydon
13.01.2009 um 11:16 Uhr
Hallo Biber,

Ich habe das Ganze nun mit zwei verschiedenen Batch-Files gelöst...

Hier die erste:

Und in der zweiten wird aus

Das ganze hat super funktioniert und läuft nun auch als geplanter Task auf den Servern, damit garnicht erst der Datenmüll aufläuft ;)

Habe das auch noch ein wenig abgewandelt, dass wir das Skript variabel an verschiedenen Orten mit verschiedenen Suchkriterien laufen lassen können :) face-smile *Ganz stolz auf mich bin*

An dieser Stelle nochmals vielen Dank für deine Hilfe und dem Know-How, das du hier aufbringst.
Christian
Bitte warten ..
Mitglied: lordraydon
13.01.2009 um 13:59 Uhr
Hallo Biber,

Ich schon wieder^^

Ich habe nun doch noch ein Problemchen...
Habe nun wie in meinem letzten Kommentar beschrieben, das @echo weggelasssen.
Leider löscht er die Dateien nun aber nicht, sondern gibt die Datei an und sagt, dass er diese Datei nicht finden kann... kann das an dieser Stelle wieder irgendwie daran liegen, dass die Dateien versteckt sind???

Danke für deine Hile.

Beste Grüße,
Christian
Bitte warten ..
Mitglied: Biber
15.01.2009 um 18:24 Uhr
Moin lordraydon,

sorry, die Antwort hat etwas gedauert...

Normalerweise sind "hidden files" immer nur insofern "unsichtbar, dass sie sicht nicht mit Wildcard-Befehlen erwischen lassen.
Also nicht mit einem "DIR *.* " oder "DEL *.*" oder ähnlichem.
Werden die Dateien explizit (namentlich) angefasst und angesprochen, verhalten sie sich wie alles Sichtbare, was man/frau so in die Finger bekommt.

Daran sollte es also nicht liegen.

Leider löscht er die Dateien nun aber nicht, sondern gibt die Datei an und sagt, dass er diese Datei nicht finden kann...
kann das an dieser Stelle wieder irgendwie daran liegen, dass die Dateien versteckt sind???

Also--> Merk Dir Pfad und Namen einer dieser Dateien... (ggf. vom Bildschirm Copy&Pasten) und
... schau was passiert, wenn Du mit einem
DIR pfad\nameDerNichtGefundenenDatei.xyz
draufgehst... also ob da die gleiche Fehlermeldung kommt
... und falls ja, dann prüfe, was dieser Befehl anzeigt:
Attrib pfad\nameDerNichtGefundenenDatei.xyz

Dann schauen wir weiter.

Grüße
Biber
Bitte warten ..
Heiß diskutierte Inhalte
Netzwerke
PFSense und Transferprobleme
Xaero1982Vor 1 TagFrageNetzwerke26 Kommentare

Moin Zusammen, leidiges Thema PFSense - ich hab mich mal wieder ran gewagt. Ich hab hier so ein paar VLANs laufen und nen ESX. ...

Router & Routing
FB und Archer 2 getrennte Netze mit einer WAN-Verbindung
neuhier14Vor 1 TagFrageRouter & Routing26 Kommentare

Hallo, ich habe eine Fritzbox 7490 und einen Archer C5 mit OpenWRT. Die Fritzbox ist mein Hauptrouter. Ich würde daneben gerne ein komplett getrenntes ...

Linux
Bootable Win7 stick from Raspberry commandline
winlinVor 1 TagFrageLinux12 Kommentare

Hallo zusammen Ich benötige einen bootfähigen Win7 USB Stick. Muss diesen über meine Raspberry erstellen. Was ist die beste Variante habe schon ein paar ...

Windows Server
Kein Netzwerkzugriff auf Windows Server 2019?
Henk86Vor 1 TagFrageWindows Server8 Kommentare

Ich habe mir einen neuen "Heimserver" mit Windows Server 2019 (evaluation vorerst) aufgesetzt. Gestern habe ich von meinem Hauptrechner einige Daten auf den Server ...

Exchange Server
Postfach für öffentliche Ordner ist voll
gelöst Tommy525600Vor 1 TagFrageExchange Server6 Kommentare

Hallo an alle, ich habe folgendes Problem: Mein primäres Postfach für öffentliche Ordner ist voll (99,58 GB) (und ja, ich kann auch nix dafür). ...

Netzwerke
Verständnisfrage pfSense mit Fritzbox, VLAN und Switch
newbie1Vor 1 TagFrageNetzwerke10 Kommentare

Hallo, ich bin kurz davor mir eine pfSense einzurichten via ISO-Image auf einem alten PC. Vorhaben: Fritzbox -> pfSense -> Switch -> Endgeräte Was ...

Windows Server
Problem bei Windows 10 Deployment mit MDT
gelöst neophyte2021Vor 1 TagFrageWindows Server7 Kommentare

Hallo, ich habe folgendes Problem, ich habe in einem Artikel auf englisch gelesen, das wenn man mit dem MDT Windows 10 ausrollen will und ...

Off Topic
Bewerbungsfragen FISI
IT-ProVor 15 StundenFrageOff Topic12 Kommentare

Hi, Ja, der Titel mag etwas komisch klingen. Aber das wird sich in den folgenden Zeilen hoffentlich lösen. Ich habe mich hier gerade durch ...