How to get creation date of files

How can I get the creation date of file? I can get modified date with dir command but not the creation date.

 Risposta accettata

Stephen23
Stephen23 il 8 Giu 2016
Modificato: Stephen23 il 8 Giu 2016
Try this FEX submission:
Or on windows you can call the DOS command:
but their advice is not quite correct, it actually needs to be like this:
>> [~,str] = dos('dir /T:C *.m');
>> rgx = '(\d{4}\.\d{2}\.\d{2}\.\s+\d{2}:\d{2})\s+\d+\s+([^\n]+)';
>> tkn = regexp(str,rgx,'tokens');
>> tkn{:}
ans =
'2016.03.02. 11:51' 'startup.m'
ans =
'2016.06.07. 15:29' 'Untitled.m'
And then it reads the creation date perfectly!

4 Commenti

Gen
Gen il 8 Giu 2016
Thank you very much Stephen. It seems I need Windows. Do you know anything work with Mac like this??
Stephen23
Stephen23 il 8 Giu 2016
Modificato: Stephen23 il 8 Giu 2016
POSIX (which MAC OS X is compliant with) does not require the storage of the file creation date. Linux does not store this. But apparently OSX does keep this information somehow.... use your favorite internet search engine and you will find the required commands. Then you just need to find a way to call them from MATLAB (probably via system). Good luck!
Gen
Gen il 4 Feb 2019
Thank you very much.
I'll try these program.
If you have spaces in the directory name you will need to put double quotes on the file name, here in a variable called fileName:
[~, str] = dos(['dir "' fileName '"']);

Accedi per commentare.

Più risposte (4)

Guillaume
Guillaume il 8 Giu 2016
On windows you can simply delegate to .Net
d = system.IO.File.GetCreationTime(fullpath)

1 Commento

Thanks for the info, this is a nice clean solution! By comparison parsing the return from "dir" seems to be very fragile and is inherently platform dependent.
One correction: at least for my case, "system" must be capitalized.
d = System.IO.File.GetCreationTime(fullpath);
The resulting .NET DateTime object can then be converted into a MATLAB datetime object.
creationDateTime = datetime(d.Year, d.Month, d.Day, d.Hour, d.Minute, d.Second);

Accedi per commentare.

With python now very much integrated into MATLAB (R2021a), a nice way to get this is the following:
d1 = datetime(py.os.path.getctime('video_path'),'ConvertFrom','epochtime','TicksPerSecond',1,'Format','dd-MMM-yyyy HH:mm:ss.SSS');
Tim Lueth
Tim Lueth il 29 Gen 2019
Modificato: Tim Lueth il 29 Gen 2019
On Mac OSX (tested 2019-01-29 using Mojave and Matlab R2018a) use:
[a,b]=system('GetFileInfo myfile.m'); s=strfind(b,'created: ')+9; crdat=b(s:s+18)
or
fname='myfile.m'
[a,b]=system(sprintf('GetFileInfo "%s"',fname)); s=strfind(b,'created: ')+9; crdat=b(s:s+18)
datestr(datenum(crdat))
Why not like this?
file_info = dir(path_to_file)

1 Commento

"Why not like this?"
The question asks for the file creation date. DIR() returns the file modification date:
This is explained in the DIR() documentation:

Accedi per commentare.

Categorie

Richiesto:

Gen
il 8 Giu 2016

Commentato:

il 26 Gen 2023

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by