Das Ordnerdatum manuel aendern
Re: Das Dateidatum manuel aendern
Überprüfe mal, ob Deine Datei schreibgeschützt ist.
Gruß: Bernd
Gruß: Bernd
PB 5.31 (x86) & (x64) Win10
Re: Das Dateidatum manuel aendern
Hallo Bernd,
ja das mit den Files klappt jetzt "SetFileDate"
Gibt es auch so etwas wie "SetFolderDate"? Ich habe diesbezüglich nichts gefunden. Ich will ja das Erstellungsdatum von den Ordner aendern, nicht die von den Dateien.
Ich werde diesbezüglich noch die Überschrift aendern, war wohl falsch gewaehlt.
Michael
ja das mit den Files klappt jetzt "SetFileDate"
Gibt es auch so etwas wie "SetFolderDate"? Ich habe diesbezüglich nichts gefunden. Ich will ja das Erstellungsdatum von den Ordner aendern, nicht die von den Dateien.
Ich werde diesbezüglich noch die Überschrift aendern, war wohl falsch gewaehlt.
Michael
PB 4.02 (wegen Disphelper), 5.72 (Windows) (x64)
Re: Das Ordnerdatum manuel aendern
Hallo HemSA.
Ja, das Du eher die Ordnerzeiten einstellen möchtest, habe ich mir schon gedacht.
Leider ist das wohl nicht direkt machbar.
Das wundert mich auch, aber Ordner sind wohl irgentwie eine Besonderheit.
Auf einer VB Seite habe ich einen Trick entdeckt.
http://www.vbarchiv.net/tipps/details.php?id=593
Aber leider bin ich (noch) nicht schlau genug, das nach PB zu übersetzen.
Vieleicht kann da jemannd von den anderen Spezis hier helfen?
Gruß: Bernd
Ja, das Du eher die Ordnerzeiten einstellen möchtest, habe ich mir schon gedacht.
Leider ist das wohl nicht direkt machbar.
Das wundert mich auch, aber Ordner sind wohl irgentwie eine Besonderheit.
Auf einer VB Seite habe ich einen Trick entdeckt.
http://www.vbarchiv.net/tipps/details.php?id=593
Aber leider bin ich (noch) nicht schlau genug, das nach PB zu übersetzen.
Vieleicht kann da jemannd von den anderen Spezis hier helfen?

Gruß: Bernd
PB 5.31 (x86) & (x64) Win10
Re: Das Ordnerdatum manuel aendern
Yipie, Geschaft.
Nun müssen die beiden Teile, das alte und das neue
noch zusammengefügt werden.
Aber erst morgen.
Gruß: Bernd
PS. Ich finde, nun darf das Ganze aber nach Tips & Tricks erhoben werden. 

Nun müssen die beiden Teile, das alte und das neue
noch zusammengefügt werden.
Aber erst morgen.
Gruß: Bernd
Code: Alles auswählen
EnableExplicit
Global tCreation , tLastAccess, tLastWrite
Global ReadFolderTime,WriteFolderTime
Define sFolder.s = "c:\temp"
Procedure.s GetTime()
Protected s.SYSTEMTIME
Protected t$
With s
t$=RSet(Str(\wDay) ,2,"0") +"."
t$+RSet(Str(\wMonth) ,2,"0") +"."
t$+RSet(Str(\wYear) ,4,"0") +" "
t$+RSet(Str(\wHour) ,2,"0") +":"
t$+RSet(Str(\wMinute) ,2,"0") +":"
t$+RSet(Str(\wSecond) ,2,"0")
EndWith
ProcedureReturn t$
EndProcedure
; ------ Datumswerte ermitteln
Procedure ReadFolderTime(sFolder.s)
; Datum/Zeitwert eines Ordners ermitteln
Protected fHandle.l
Protected ftCreation.FILETIME
Protected ftLastAccess.FILETIME
Protected ftLastWrite.FILETIME
Protected LocalFileTime.FILETIME
Protected LocalSystemTime.SYSTEMTIME
Protected ReadFolderTime = #False
; ggf. abschließenden Backslash hinzufügen
If Right(sFolder, 1) <> "\" : sFolder = sFolder + "\" : EndIf
; Verzeichnishandle ermitteln
fHandle = CreateFile_(sFolder, #GENERIC_READ|#GENERIC_WRITE, #FILE_SHARE_READ|#FILE_SHARE_WRITE, 0, #OPEN_EXISTING, #FILE_FLAG_BACKUP_SEMANTICS, 0)
If fHandle <> -1
; Zeitinformationen auslesen
If GetFileTime_(fHandle, ftCreation, ftLastAccess, ftLastWrite) <> 0
; Erstellungsdatum
FileTimeToLocalFileTime_( ftCreation, LocalFileTime)
FileTimeToSystemTime_( LocalFileTime, LocalSystemTime)
tCreation=ParseDate("%dd.%mm.%yyyy %hh:%ii:%ss",GetTime())
; Letzter Zugriff
FileTimeToLocalFileTime_( ftLastAccess, LocalFileTime)
FileTimeToSystemTime_( LocalFileTime, LocalSystemTime)
tLastAccess = ParseDate("%dd.%mm.%yyyy %hh:%ii:%ss",GetTime())
; Letzte Änderung
FileTimeToLocalFileTime_( ftLastWrite, LocalFileTime)
FileTimeToSystemTime_( LocalFileTime, LocalSystemTime)
tLastWrite =ParseDate("%dd.%mm.%yyyy %hh:%ii:%ss",GetTime())
ReadFolderTime = #True
EndIf
; Verzeichnishandle schließen
CloseHandle_( fHandle)
EndIf
ProcedureReturn ReadFolderTime
EndProcedure
; ------ Datumswerte ändern
Procedure WriteFolderTime(sFolder.s)
; Datum/Zeitwert eines Ordners ändern
Protected fHandle.l
Protected ftCreation.FILETIME
Protected ftLastAccess.FILETIME
Protected ftLastWrite.FILETIME
Protected LocalFileTime.FILETIME
Protected LocalSystemTime.SYSTEMTIME
Protected WriteFolderTime = #False
; ggf. abschließenden Backslash hinzufügen
If Right(sFolder, 1) <> "\" : sFolder = sFolder + "\" : EndIf
; Verzeichnishandle ermitteln
fHandle = CreateFile_(sFolder, #GENERIC_READ | #GENERIC_WRITE, #FILE_SHARE_READ | #FILE_SHARE_WRITE, 0, #OPEN_EXISTING, #FILE_FLAG_BACKUP_SEMANTICS, 0)
If fHandle <> -1
; Erstellungsdatum
With LocalSystemTime
\wDay = Day(tCreation)
;\wDayOfWeek = DayOfWeek(tCreation)
\wMonth = Month(tCreation)
\wYear = Year(tCreation)
\wHour = Hour(tCreation)
\wMinute = Minute(tCreation)
\wSecond = Second(tCreation)
EndWith
SystemTimeToFileTime_(LocalSystemTime, LocalFileTime)
LocalFileTimeToFileTime_(LocalFileTime, ftCreation)
; Letzter Zugriff
With LocalSystemTime
\wDay = Day(tLastAccess)
;\wDayOfWeek = Weekday(tLastAccess)
\wMonth = Month(tLastAccess)
\wYear = Year(tLastAccess)
\wHour = Hour(tLastAccess)
\wMinute = Minute(tLastAccess)
\wSecond = Second(tLastAccess)
EndWith
SystemTimeToFileTime_(LocalSystemTime, LocalFileTime)
LocalFileTimeToFileTime_(LocalFileTime, ftLastAccess)
; Letzte Änderung
With LocalSystemTime
\wDay = Day(tLastWrite)
;\wDayOfWeek = Weekday(tLastWrite)
\wMonth = Month(tLastWrite)
\wYear = Year(tLastWrite)
\wHour = Hour(tLastWrite)
\wMinute = Minute(tLastWrite)
\wSecond = Second(tLastWrite)
EndWith
SystemTimeToFileTime_(LocalSystemTime, LocalFileTime)
LocalFileTimeToFileTime_(LocalFileTime, ftLastWrite)
; Datumswerte neu setzen
If SetFileTime_(fHandle, ftCreation, ftLastAccess, ftLastWrite) <> 0
WriteFolderTime = #True
EndIf
; Verzeichnishandle schließen
CloseHandle_ (fHandle)
EndIf
ProcedureReturn WriteFolderTime
EndProcedure
; ------ Aufruf der Funktionen:
; Zeitangaben lesen
If ReadFolderTime(sFolder)
; Erstellungsdatum ändern
tCreation = ParseDate("%dd.%mm.%yyyy %hh:%ii:%ss","29.08.2002 17:35:41")
; Datum "Letzter Zugriff" ändern
tLastAccess = ParseDate("%dd.%mm.%yyyy %hh:%ii:%ss","29.08.2002 17:35:41")
; Datum "Letzter Änderung" ändern
tLastWrite = ParseDate("%dd.%mm.%yyyy %hh:%ii:%ss","30.03.2012 17:35:41")
; Zeitangaben setzen
WriteFolderTime(sFolder)
EndIf

PB 5.31 (x86) & (x64) Win10
Re: Das Ordnerdatum manuel aendern
@BSP
Erstell einfach dort einen neuen Thread und füg dort deinen Code ein.
Erstell einfach dort einen neuen Thread und füg dort deinen Code ein.
Re: Das Ordnerdatum manuel aendern
Im englischen Forum hat netmaestro schon 2007 in einem Beispiel
gezeigt, wie man das Erstellungsdatum eines Ordners abändert:
http://www.purebasic.fr/english/viewtopic.php?t=28023
gezeigt, wie man das Erstellungsdatum eines Ordners abändert:
http://www.purebasic.fr/english/viewtopic.php?t=28023
Re: Das Ordnerdatum manuel aendern
Hallo Bernd,
danke dir.
danke dir.
PB 4.02 (wegen Disphelper), 5.72 (Windows) (x64)
Re: Das Ordnerdatum manuel aendern
Hallo HemSA.
Gern geschehen. Mir macht das Tüfteln ja auch Spass.
Meine überarbeitete Version hier:
http://www.purebasic.fr/german/viewtopi ... =8&t=25382
hast Du auch gefunden?
Gruß: Bernd
Gern geschehen. Mir macht das Tüfteln ja auch Spass.
Meine überarbeitete Version hier:
http://www.purebasic.fr/german/viewtopi ... =8&t=25382
hast Du auch gefunden?
Gruß: Bernd
Zuletzt geändert von BSP am 02.04.2012 14:18, insgesamt 1-mal geändert.
PB 5.31 (x86) & (x64) Win10
Re: Das Ordnerdatum manuel aendern
@BSP
Kannst du bitte nicht mehr über diese URL "http://forums.purebasic.com/german/" (veraltet) ins Forum kommen, sondern über die folgende: "http://www.purebasic.fr/german/"
Deine Links funktionieren nämlich nicht richtig (man ist dann nicht mehr angemeldet), wenn ein Anderer unter der aktuellen URL ("http://www.purebasic.fr/german/") angemeldet ist.
Kannst du bitte nicht mehr über diese URL "http://forums.purebasic.com/german/" (veraltet) ins Forum kommen, sondern über die folgende: "http://www.purebasic.fr/german/"
Deine Links funktionieren nämlich nicht richtig (man ist dann nicht mehr angemeldet), wenn ein Anderer unter der aktuellen URL ("http://www.purebasic.fr/german/") angemeldet ist.
Re: Das Ordnerdatum manuel aendern
Hallo RSBasic.
Habs geändert. Danke für den Hinweis.
Gruß: Bernd
Habs geändert. Danke für den Hinweis.
Gruß: Bernd
PB 5.31 (x86) & (x64) Win10