Wednesday, May 22, 2019

#1 2019-03-12 01:13:46 pm

jwhittaker
Member
From:: Rhode Island
Registered: 2013-09-16
Posts: 1
Website

Append File Create date to File name

I have thousands of files in folders and i they all have the same prefix DSC00125.jpg what varies in the numerical part of the filename. (these are photographic files)

I would like to grab the create date of each file and append the YYYY-MM-DD- as a prefix to the
file, currently I am using the find and replace command.

I found it on another website, did some editing and here is the script.

Here is the script
tell application "Finder"
    set theSelection to selection
    repeat with thisFile in theSelection
        set theName to name of thisFile
        if not ((theName begins with "clip") or (class of thisFile is folder)) then
            get the creation date of thisFile
            set convertedDate to result - 5
            set name of thisFile to my dateString(convertedDate) & theName
        end if
    end repeat
end tell
on dateString(theDate)
    set theYear to year of theDate
    set theMonth to month of theDate as integer
    if theMonth < 10 then set theMonth to "0" & theMonth
    set theDay to day of theDate
    if theDay < 10 then set theDay to "0" & theDay
    set theTime to time string of theDate
    return (theYear as text) & "-" & theMonth & "-" & theDay & "-"
end dateString

Last edited by jwhittaker (2019-03-12 03:46:36 pm)


Filed under: append, filename, File date

Offline

 

#2 2019-03-12 04:10:13 pm

peavine
Member
From:: Prescott, Arizona
Registered: 2018-09-04
Posts: 69

Re: Append File Create date to File name

The script contained below works but I should add two notes and a caution:

* The script only works on the files in the selected folder.

* The script uses Finder and could be unacceptably slow with a large number of files. It's easy to do a trial run to see if it works OK.

* I tested this script on about a 100 files in a folder without issue. However, it's important that you have a backup of the files before renaming them.

Applescript:


set fileExtensions to {"jpg", "jpeg"}

set pictureFolder to choose folder

tell application "Finder"
   set pictureFiles to every file in pictureFolder whose name extension is in fileExtensions
   repeat with aFile in pictureFiles
       set fileName to name of aFile
       set {year:y, month:m, day:d} to creation date of aFile
       set dateStamp to (y as text) & "-" & text -2 thru -1 of ("0" & (m as integer)) & "-" & ¬
           text -2 thru -1 of ("0" & d)
       set name of aFile to dateStamp & " - " & fileName
   end repeat
end tell

EDIT: After reading Yvan's script, it occurred to me that it's unnecessary to distinguish between "jpg" and "JPG", and I modified my script accordingly.

Last edited by peavine (2019-03-13 08:25:29 am)

Offline

 

#3 2019-03-13 05:10:07 am

Yvan Koenig
Member
Registered: 2006-09-14
Posts: 3440

Re: Append File Create date to File name

Here I don't use the Finder but ASObjC.

It's supposed to be faster.
A choose folder dialog urge you to select one or several folders.
Every jpg or jpeg files embedded in these folders and their subfolders will be date stamped.

Applescript:

(*
https://macscripter.net/viewtopic.php?id=46773

addDateStampToJpegFiles

https://macscripter.net/viewtopic.php?id=46773

Based upon several scripts by Shane STANLEY

*)



use AppleScript version "2.4"
use framework "Foundation"
use scripting additions


on addDateStampToJpegFilesIn:folderPath
   set |⌘| to current application
   set theURL to |⌘|'s |NSURL|'s fileURLWithPath:folderPath
   set fileManager to |⌘|'s NSFileManager's defaultManager()
   set theOptions to (|⌘|'s NSDirectoryEnumerationSkipsPackageDescendants as integer) + (|⌘|'s NSDirectoryEnumerationSkipsHiddenFiles as integer)
   set theEnumerator to fileManager's enumeratorAtURL:theURL includingPropertiesForKeys:{} options:theOptions errorHandler:(missing value)
   repeat
       set aURL to theEnumerator's nextObject()
       
       if aURL is missing value then exit repeat -- missing value means there are no more log (aURL's |path|() as text)
       set theExtension to aURL's pathExtension()
       if ((theExtension as text) is in {"jpg", "jpeg"}) then
           set theFolderURL to aURL's URLByDeletingLastPathComponent()
           set PosixName to (aURL's lastPathComponent()) as text
           set {theResult, theDate} to aURL's getResourceValue:(reference) forKey:(current application's NSURLCreationDateKey) |error|:(missing value)
           set theFormatter to |⌘|'s NSDateFormatter's new()
           theFormatter's setDateFormat:"yyyy-MM-dd_"
           set theStamp to (theFormatter's stringFromDate:theDate) as text
           set newName to theStamp & PosixName
           set theDestURL to theFolderURL's URLByAppendingPathComponent:newName
           set fileManager to |⌘|'s NSFileManager's defaultManager()
           set {theResult, theError} to fileManager's moveItemAtURL:aURL toURL:theDestURL |error|:(reference)
       end if
   end repeat
end addDateStampToJpegFilesIn:


set theFolders to choose folder with prompt "Select folder(s) whose jpeg files must be date stamped" default location (path to desktop) with multiple selections allowed

repeat with aFolder in theFolders
   (my addDateStampToJpegFilesIn:(POSIX path of aFolder))
end repeat

Yvan KOENIG running High Sierra 10.13.6 in French (VALLAURIS, France) mercredi 13 mars 2019 12:09:38

Offline

 

Board footer

Powered by FluxBB

RSS (new topics) RSS (active topics)