Im Explorer, Sortierung nach Änderungsdatum, Unterordner mit einbeziehen

Schneekönig

Newbie
Registriert
Aug. 2024
Beiträge
3
Hallo,
ich Suche nach einer Möglichkeit den Explorer unter Win10 so einzustellen, dass das Änderungsdatum eines Ordners auch Änderungen in allen Unterordnern berücksichtigt.
Hintergrund: Wir organisieren bei uns Projekte durch eine einfache Ordnerstruktur, weil wir aber sehr viele Projekte parallel bearbeiten, wollen wir die Aktuellsten immer oben stehen haben. Das funktioniert auch super, solange wir keine Unterordner erstellen.
Hat jemand eine Idee wie man das lösen kann oder gibt es alternative Explorer-Programme die das können?

Ich freue mich auf Eure Antworten.
Vielen Dank.
 
Spontan würde mir hier ein Script einfallen, welches periodisch sämtliche Unterordner durchgeht, nach Änderungen sucht und das Änderungsdatum in den "root"-Ordner schreibt...

Ich würde das jedoch eher organisatorisch anpacken, anstatt sowas zu basteln.
 
  • Gefällt mir
Reaktionen: tollertyp
Da niemand antwortete (wie gewohnt schnell auf CB) habe ich mal über dein Problem nachgedacht.
Bedarf Änderungen in der Registry.

Code:
; Automatische Ordnererkennung (z. B. Musik-Dateien) deaktivieren
[HKEY_CURRENT_USER\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags\AllFolders\Shell]
"FolderType"="NotSpecified"

; Ordner-Einstellugen reseten
[-HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\BagMRU]
[-HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags]

Dann Ordner im Explorer nach Änderungsdatum sortieren und im Menü Optionen->Ansicht->Für Ordner übernehmen anklicken.
Dann sind hier nach einem Kurztest immer alle Ordner und Unterordner nach Datum sortiert.
 
Hast wohl zu früh aufgehört beim Bedenken des Problems :D

Das beinhaltet nicht die Unterordner... Sprich wenn unterhalb von Ordner 1 ein neuer Ordner erstellt wird, bleibt das Änderungsdatum von Ordner 1 gleich - obwohl sich inhaltlich ja was geändert hat.
 
  • Gefällt mir
Reaktionen: tollertyp
Gute Frage. Einfaches Anzeigen nach Datum oder ständiger Refresh der Ordner nach Datum.
 
JennyCB schrieb:
Dann sind hier nach einem Kurztest immer alle Ordner und Unterordner nach Datum sortiert.
Und auch alle Nicht-Unterordner, oder?

Aber wenn ich das richtig sehe, hat das gar nichts mit der Fragestellung zu tun.
Ergänzung ()

JennyCB schrieb:
Einfaches Anzeigen nach Datum oder ständiger Refresh der Ordner nach Datum.
Bitte was?

Also folgendes...
Wir haben eine Verzeichnisstruktur:
Code:
Wurzel
+ Ordner1
  + Unterordner1
    + Unterunterordner1
  + Unterordner2
    + Unterunterordner2
  + Unterordner3
    + Unterunterordner3
    + Unterunterordner4
+ Ordner2
  + Unterordner4
    + Unterunterordner5
  + Unterordner5
    + Unterunterordner6
  + Unterordner6
    + Unterunterordner7
    + Unterunterordner8
Ändert sich was in Unterunterodner7, dann hat Unterornder6 immer noch das alte Änderungsdatum, auch Ornder2, und wenn ich in Wurzel bin sehe ich nicht, dass sich innerhalb von Ordner2 was gerade gerändert hat...
 
tollertyp schrieb:
Also folgendes...
Wir haben eine Verzeichnisstruktur:
Wurzel + Ordner1 + Unterordner1 + Unterunterordner1 + Unterordner2 + Unterunterordner2 + Unterordner3 + Unterunterordner3 + Unterunterordner4 + Ordner2 + Unterordner4 + Unterunterordner5 + Unterordner5 + Unterunterordner6 + Unterordner6 + Unterunterordner7 + Unterunterordner8Ändert sich was in Unterunterodner7, dann hat Unterornder6 immer noch das alte Änderungsdatum, auch Ornder2, und wenn ich in Wurzel bin sehe ich nicht, dass sich innerhalb von Ordner2 was gerade gerändert hat...
Genau das ist das richtige Schema, Danke fürs visualisieren.
Mein Wunsch wäre es, dass, wenn ich Änderungen im Unterunterordner8 vornehme, sich das Änderungsdatum bis zum Ordner 2 ändert. So dass ich immer sehen kann in welchem Ordner zuletzt gearbeitet wurde.
 
In Datei-Explorern wie Directory Opus kann man sich eine Scriptspalte basteln, wie hier zum Beispiel " Newest File Date (Recursive)" und dann anhand dieser Spalte sortieren wenn ich es richtig verstanden habe.

2024-08-30_150029 [1].png



2024-08-30_150029 [2].png


2024-08-30_150442.png



https://resource.dopus.com/t/newest-file-column/18765
 
  • Gefällt mir
Reaktionen: tollertyp
Die Frage bleibt halt spannend, wie gut die Performance da ist (also je nachdem, wie komplex die Datei-Lage ist, aber wenn schon solche Wünsche geäußert werden... :P ).

Man könnte sich auch fast überlegen, ob man ein kleines Tool schreibt, das einen File-System-Watcher hat, und bei Änderungen dann eben das Änderungsdatum bis zu einem bestimmten Elternverzeichnis hin übernimmt.

Ich habe einfach mal ChatGPT gefragt:
Frage schrieb:
Ich hätte gerne ein Windows-Programm, das innerhalb eines Verzeichnisses auf Änderungen in Dateien (in Unterordnern) reagiert, und das Änderungsdatum dann rekursiv bis zu einem gewissen Elternverzeichnis hin übernimmt.
Antwort von ChatGPT schrieb:
Um ein solches Windows-Programm zu erstellen, das Änderungen in Dateien innerhalb eines Verzeichnisses und seiner Unterverzeichnisse überwacht und das Änderungsdatum rekursiv bis zu einem bestimmten Elternverzeichnis aktualisiert, kannst du eine Anwendung in einer Programmiersprache wie Python schreiben. Python bietet dafür eine einfache Möglichkeit mit dem Modul watchdog, das Dateisystemänderungen überwachen kann.

Hier ist eine beispielhafte Implementierung:

### Voraussetzungen

1. Installiere Python (falls noch nicht installiert).
2. Installiere das watchdog-Modul mit pip:

Code:
bash
   pip install watchdog

### Beispielprogramm

Python:
import os
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler

class ChangeHandler(FileSystemEventHandler):
    def __init__(self, root_dir, parent_dir):
        self.root_dir = root_dir
        self.parent_dir = parent_dir

    def on_modified(self, event):
        if event.is_directory:
            return
      
        # Datei wurde geändert, also aktualisieren wir die Verzeichnisse
        self.update_directories(event.src_path)

    def update_directories(self, file_path):
        # Hole den relativen Pfad der Datei
        relative_path = os.path.relpath(file_path, self.root_dir)
        # Teile den Pfad in seine Komponenten auf
        path_parts = relative_path.split(os.sep)

        # Beginne beim tiefsten Verzeichnis und arbeite dich bis zum Elternverzeichnis hoch
        current_dir = self.root_dir
        for part in path_parts[:-1]:  # Letztes Element ist die Datei selbst
            current_dir = os.path.join(current_dir, part)
            os.utime(current_dir, None)

            # Wenn das aktuelle Verzeichnis das Elternverzeichnis erreicht hat, breche ab
            if os.path.abspath(current_dir) == os.path.abspath(self.parent_dir):
                break

def start_monitoring(root_dir, parent_dir):
    event_handler = ChangeHandler(root_dir, parent_dir)
    observer = Observer()
    observer.schedule(event_handler, path=root_dir, recursive=True)
    observer.start()

    print(f"Überwachung gestartet. Beobachte Änderungen in {root_dir}...")

    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()

    observer.join()

if __name__ == "__main__":
    root_dir = r"C:\Pfad\zum\Überwachenden\Verzeichnis"
    parent_dir = r"C:\Pfad\zum\Elternverzeichnis"

    start_monitoring(root_dir, parent_dir)

### So funktioniert das Programm:

1. ChangeHandler-Klasse: Diese Klasse erbt von FileSystemEventHandler und überschreibt die Methode on_modified, die bei jeder Änderung einer Datei aufgerufen wird. Wenn eine Datei geändert wird, wird die update_directories-Methode aufgerufen, die die Änderungszeit der Verzeichnisse entlang des Pfads bis zum angegebenen Elternverzeichnis aktualisiert.

2. start_monitoring-Funktion: Diese Funktion startet den Observer, der das angegebene root_dir rekursiv überwacht. Änderungen werden an den ChangeHandler gesendet.

3. main-Funktion: Hier kannst du das zu überwachende Verzeichnis (root_dir) und das Elternverzeichnis (parent_dir) festlegen.

### Verwendung:

1. Passe die Pfade root_dir und parent_dir in der main-Funktion an deine Bedürfnisse an.
2. Führe das Skript aus. Es beginnt dann, das angegebene Verzeichnis und seine Unterverzeichnisse zu überwachen.
3. Bei jeder Änderung einer Datei wird das Änderungsdatum der Verzeichnisse bis zum angegebenen Elternverzeichnis aktualisiert.

Dieses Programm kann als einfaches Tool dienen, um Dateisystemänderungen zu überwachen und entsprechende Metadaten zu aktualisieren. Es kann bei Bedarf weiter angepasst werden, z. B. um zusätzliche Ereignisse oder Funktionen zu unterstützen.

Vorteil: Würde mit jedem Dateimanager funktionieren. Wenn es eine Netzwerkfreigabe ist, und man auf dem Server auch Software installieren kann, würde das auch für alle Nutzer gelten.
Wenn es halt irgendein Cloud-Speicher ist, dann sieht das ganze wieder etwas anders aus.
 
  • Gefällt mir
Reaktionen: nutrix und Hardkorn
Schneekönig schrieb:
dass das Änderungsdatum eines Ordners auch Änderungen in allen Unterordnern berücksichtigt.
Subtil.
Mit was verändere ich bitte bei einem Ordner(!) das Datum direkt? Umbenennen und zurückbenennen?

Mir ist eine gewisse Bequemlichkeit untergekommen, dass man sich auf die Dateisystemdaten stützt stets neueste Dateien und Ordner »oben« zu haben.
Und da graut es mir. Ordner sollen für Ordnung sorgen. Dazu haben die Namen. Wenn ich am Projekt Kirschtomate arbeite dann arbeite ich am Projekt Kirschtomate, und es ist mit egal wie viele neuere (jüngere) Ordner da existieren, wo andere Kollegen herumfriemeln.
Ich lege also einfach einen neuen Ordner an, frische einen alten auf, der Kollege der direkt nichts davon weiß tut das auch und - huch - wessen Ordner ist denn nun der neueste der nach oben soll?

Hier soll ein Problem gelöst werden das es gar nicht so geben dürfte. Ich würde da eher mal an der Wurzel angreifen.

CN8
 
Dein Anliegen macht kein Dateisystem weder Windows (NTFS) noch Linux (EXT4).
Maximal der übergeordnete Ordner wird aktualisiert aber nicht der ganze Baum bis zur Wurzel.
Das wird mit Performanceeinbrüchen begründet.
 
tollertyp schrieb:
Also z.B. neue Dateien anlegen.
Das ist keine Erklärung warum der Ordner sich ändern sollte, zumindest seine Eigenschaften.

Wenn es ein Tool gäbe das mir einfiele, aber das wäre eine andere Zielrichtung, dann FreeFileSync und mit dessen Hilfsprog RealTimeSync.exe das Ordner überwacht, sogar jeden Unterordner. Nur wird dann eine Sync-Aktion getriggert, das hilft nicht recht.

Aus Neugier ausprobiert: ich kann zumindest jede EXE dort auslösen lassen, Weiteres wie CMD oder PS nicht geprüft. Damit könnte ich mir z.B. mit AutoIt was klöppeln das die Ordnereigenschaften frisiert.

Ich bleibe aber dabei, hier soll ein an der Wurzel faules Problem gelöst werden statt das mal richtig anzupacken.

CN8
 
Zuletzt bearbeitet:
cumulonimbus8 schrieb:
Das ist keine Erklärung warum der Ordner sich ändern sollte, zumindest seine Eigenschaften.
wie meinst du das?
Definierst du jetzt, was das Änderungsdatum eines Ordners bedeutet?

Hier gibt es eine Erklärung:
https://web.archive.org/web/20150301183550/https://support.microsoft.com/KB/299648
Also in Bezug darauf, dass sich das Änderungsdatum eines Ordners ändert, wenn sich der Inhalt des Ordners ändert auf Dateisystemebene betrachtet.
Der Inhalt von Dateien selbst hat keinen Einfluss auf das Änderungsdatum.
 
Zuletzt bearbeitet:
Guten Morgen, vielen Dank für die vielen Antworten und Lösungsvorschläge.
Ich muss mich hier erstmal richtig durch arbeiten.
 
tollertyp schrieb:
Definierst du jetzt, was das Änderungsdatum eines Ordners bedeutet?
Ja. Genau das tue ich!
Weil ich in einem Ordern im Dateisystem = an und mit Dateien wie Ordnern tun und lassen kann was ich will - es wird das Datum des Ordners nicht anfechten!

Wie bitte änderst du dann das «Datum des Ordners»? En hopp, mit typischem (Bord)Werkzeug? Das wird doch bitte nicht sein Klarname sein??!

CN8
 
Zurück
Oben