// Called by Directory Opus to initialize the script function OnInit(initData) { initData.name = "Extract Dates to Column"; initData.version = "1.0"; initData.copyright = "(c) 2021 Leo Davidson"; initData.url = "https://resource.dopus.com/t/sorting-by-filename-with-different-date-formats/38827"; initData.desc = "Extract M D Y and Y M D dates from filenames into a column you can sort by."; initData.default_enable = true; initData.min_version = "12.24"; } // Called to add columns to Opus function OnAddColumns(addColData) { var col = addColData.AddColumn(); col.name = "DateFromName"; col.method = "OnDateFromName"; col.label = "Date from Name"; col.type = "date"; col.justify = "right"; col.autogroup = true; } // Regex based on wowbagger's post: https://resource.dopus.com/t/changing-filename-date-format-to-yyyy-mm-dd-issues/29170/14 var reMDY = /(^|\D)([0-1]?\d)[-.]([0-3]?\d)[-.]((?:19|20)?\d{1,2})($|\D)/; var reYMD = /(^|\D)((?:19|20)?\d{1,2})[-.]([0-1]?\d)[-.]([0-3]?\d)($|\D)/; // Implement the DateFromName column function OnDateFromName(scriptColData) { var name = scriptColData.item.name + ""; var matches = name.match(reMDY); var d = DOpus.Create.Date(); if (matches) { d.day = matches[3]; d.month = matches[2]; d.year = matches[4]; } else { matches = name.match(reYMD); if (!matches) return; d.day = matches[4]; d.month = matches[3]; d.year = matches[2]; } scriptColData.value = d; }