Ordner-Änderungsdatum rekursiv ändern

German support forum

Moderators: Hacker, Stefan2, white

Post Reply
bliss
New Member
New Member
Posts: 1
Joined: 2008-11-30, 17:40 UTC

Ordner-Änderungsdatum rekursiv ändern

Post by *bliss »

Hallo,

ich habe folgendes Problem: Wenn ich eine Datei in einem Ordner speichere, wird das Änderungsdatum dieses Ordners (z.B. /Bilder/deviantArt) geupdated, aber leider nicht das Änderungsdatum der Ordner aller darüberliegenden Hierarchieebenen (z.B. /Bilder). Wenn ich nun wissen will, wann das letzte Bild hinzukam, muß ich alle Unterordner von z.B. "Bilder" überprüfen, anstatt einfach auf das Änderungsdatum von "Bilder" selbst schauen zu können.
Ist das ein Verhalten, das Total Commander ändern kann?

Vielen Dank,
b
User avatar
van Dusen
Power Member
Power Member
Posts: 684
Joined: 2004-09-16, 19:30 UTC
Location: Sinzig (Rhein), Germany

Post by *van Dusen »

Hallo bliss,

herzlich willkommen im Forum!

Mit den "Bordmittlen" des TC ist dies leider nicht möglich. Du kannst aber mal SetFolderDate 1.4.0, ein Tool für den Total Commander, ausprobieren, ob es das leistet, was Du erwartest.


Alternativ, wenn auch mit weniger Optionen und nur mit der Möglichkeit, das Datum der neuesten / ältesten Datei innerhalb eines Verzeichnisses anzuzeigen ohne die Möglichkeit, die Datumsangaben auch zu ändern, kannst Du folgendes VBS-Script für das Script Content Plugin 0.2.0.0 verwenden:

Code: Select all

'*** FolderDates.vbs, V1.1, 12.09.2008, van Dusen
'*** FolderDates.vbs, V1.0, 15.07.2008, van Dusen
'*** Script for Script Content Plugin 0.2
'*** Lev Freidin (c) 2005-2008
'*** http://www.totalcmd.net/plugring/script_wdx.html
'*** http://wincmd.ru/plugring/script_wdx.html

'*** Benutzerkonfigurierbarer Bereich - Beginn **********************************
'vRecurse: 1 = Scan subfolders recursively;             0 = Do not scan subfolders
'vRecurse: 1 = Unterverzeichnisse rekursiv durchsuchen; 0 = Unterverzeichnisse nicht durchsuchen
	Const vRecurse = 1
'vFileDateType: "LastModified" | "Created" | "LastAccessed"
	Const vFileDateType = "LastModified"
'*** Benutzerkonfigurierbarer Bereich - Ende ************************************

Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")

Dim vFolder
Dim vFileCollection, vFile
Dim vSubFolderCollection, vSubFolder
Dim vResult(9)
For vI = 0 To 9
	vResult(vI) = ""
Next

Dim vPathParentBase, vPathFull
vPathParentBase = fso.GetParentFolderName(filename)
vPathFull = fso.GetAbsolutePathName(filename)

If fso.FolderExists(filename) Then
	RecurseDir(vPathFull)
Else
	Set vFile = fso.GetFile(filename)
	CheckDate()
End If
'~~~

Set vSubFolderCollection = Nothing
Set vFileCollection = Nothing
Set vFolder = Nothing
Set vFile = Nothing
Set fso = Nothing

If vResult(1) = "" Then
	For vI = 0 To 9
		vResult(vI) = "-"
	Next
Else
	vResult(1) = FormatDateTime(vResult(1), 0)
	vResult(4) = FormatDateTime(vResult(4), 0)
End If

content  = vResult(0)
content1 = vResult(1) 'Neueste Datei: Änderungsdatum
content2 = vResult(2) 'Neueste Datei: Name
content3 = vResult(3) 'Neueste Datei: Pfad
content4 = vResult(4) 'Älteste Datei: Änderungsdatum
content5 = vResult(5) 'Älteste Datei: Name
content6 = vResult(6) 'Älteste Datei: Pfad
content7 = vResult(7) 'Größte Datei : Größe
content8 = vResult(8) 'Größte Datei : Name
content9 = vResult(9) 'Größte Datei : Pfad
'~~~

Function RecurseDir(vFolderName)

	Set vFolder = fso.GetFolder(vFolderName)
	Set vFileCollection = vFolder.Files
	For Each vFile In vFileCollection
		CheckDate()
	Next
	
	If vRecurse = 0 Then Exit Function
	
	Set vSubFolderCollection = vFolder.SubFolders
	For Each vSubFolder In vSubFolderCollection
		vPathFull = vPathFull & "\" & vSubFolder.Name
		RecurseDir(vPathFull)
		vP = InStr(1, StrReverse(vPathFull), "\")
		If vP > 0 Then vPathFull = Left(vPathFull, Len(vPathFull) - vP)
	Next
	
End Function
'~~~

Function CheckDate()
		
	vPathParentCurr = fso.GetParentFolderName(vFile.Path)
	
	If vFileDateType = "Created" Then
		vFileDate = CDate(vFile.DateCreated)
	ElseIf vFileDateType = "LastAccessed" Then
		vFileDate = CDate(vFile.DateLastAccessed)
	Else
		vFileDate = CDate(vFile.DateLastModified)
	End If
	vFileSize = vFile.Size
	
	'Jüngstes (Neuestes) Dateidatum
	If vResult(1) = "" Or vFileDate > vResult(1) Then
		vResult(1) = vFileDate
		vResult(2) = vFile.Name
		vResult(3) = Mid(vPathParentCurr, Len(vPathParentBase) + 2)
	End If
	
	'Ältestes Dateidatum
	If vResult(4) = "" Or vFileDate < vResult(4) Then
		vResult(4) = vFileDate
		vResult(5) = vFile.Name
		vResult(6) = Mid(vPathParentCurr, Len(vPathParentBase) + 2)
	End If
	
	'Größte Datei
	If vResult(7) = "" Or vFileSize > vResult(7) Then
		vResult(7) = FormatNumber(vFileSize, 0, -2, -2, -2)
		vResult(8) = vFile.Name
		vResult(9) = Mid(vPathParentCurr, Len(vPathParentBase) + 2)
	End If
	
End Function
'~~~
Die dazu passende <script.ini>:

Code: Select all

[Script]
Section=FolderDates

[FolderDates]
Script=FolderDates.vbs
LongName=1
ParseDirs=1
User avatar
Dalai
Power Member
Power Member
Posts: 10003
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

Wenn du NTFS benutzt, wird das Datum des übergeordneten Verzeichnisses automatisch geändert. Bei FAT(32) ist das nicht so.

MfG Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
User avatar
Peter
Power Member
Power Member
Posts: 2068
Joined: 2003-11-13, 13:40 UTC
Location: Schweiz

Post by *Peter »

van Dusen wrote:...Alternativ, wenn auch mit weniger Optionen und nur mit der Möglichkeit, das Datum der neuesten / ältesten Datei innerhalb eines Verzeichnisses anzuzeigen ohne die Möglichkeit, die Datumsangaben auch zu ändern, kannst Du folgendes VBS-Script für das Script Content Plugin 0.2.0.0 verwenden:....
Herzlichen Dank van Dusen

eine feine Sache.

Peter
TC 10.xx / #266191
Win 10 x64
Post Reply