[Closed] Get latest open file?
Is there a way to get the latest opened file in maxScript?
Also how about the latest autobackup.
All of them could be solved by reading from the Ini file but would be nicer wit a more direct approach.
/Andreas
Reading the INI file was my first thought, too.
It is pretty straight forward as you don’t have to compile paths and bother about max versions [… maybe …].
I used used the INI file like this:
lastFileName=getINISetting (getDir #maxRoot+"3dsmax.ini") "FileList" "File1"
shortFileName=getFilenameFile lastFileName
/Andreas
–First get autoback files:
backup_files = getFiles((GetDir #autoback)+”\.“)
autoback_files = for i in backup_files where (findString i “Autobak” != undefined) collect i
–Second Use a loop to compare flies modification date:
getFileModDate <filename_string>
Is there a simple way of comparing the dates? Right now the date is just a string and it’s not formated well, so it takes quite some code to handle. For example it may say “5/1/1” as the date and later on it says 5/11/11. so the days can be both one or two letters long for example.
/Andreas
I made this for open last autoback. Its from my first begginer scripts.
I have no time to remake it , but for now is ok;)
Mabe you find some usefull there:
(--Start:
--> collect all autoback files
BackupFiles = (getfiles ((GetDir #Maxroot) + "\\autoback\\Autobak?.*"))
--> get the date on each file
if BackupFiles.count != 0 do
(
Files_Date = #()
Array_Date = #()
Array_Year = #()
Array_Month = #()
Array_Day = #()
Array_Hour = #()
Array_Minute = #()
Final_Check = #()
for i in 1 to BackupFiles.count do
(
--get file date => "7/13/2005 11:39:22 PM"
Files_Date[i] = (GetFileModDate BackupFiles[i])
--break date to parts => #("7", "13", "2005", "11", "39", "22", "PM")
Array_Date[i] = filterString Files_Date[i] "/ . :"
Array_Year[i] = (Array_Date[i] [3])--collect all years
Array_Month[i] = (Array_Date[i] [1])--collect all months
Array_Day[i] = (Array_Date[i] [2])--collect all days
Array_Hour[i] = (Array_Date[i] [4])--collect all hours
Array_Minute[i] = (Array_Date[i] [5])--collect all minutes
Final_Check[i] = (Array_Date[i] [5])--collect all minutes for final check
)
-----------------------------------------------------------------------
--> function for remove lower "date items" from array
fn DeleteLowerItemsIn arr =
(
maximus = arr.count
while maximus > 1 do
(
if (arr[1] as float) < (arr[maximus] as float) then
(
if Array_Year.count > 1 do (deleteItem Array_Year 1)
if Array_Month.count > 1 do (deleteItem Array_Month 1)
if Array_Day.count > 1 do (deleteItem Array_Day 1)
if Array_Hour.count > 1 do (deleteItem Array_Hour 1)
if Array_Minute.count > 1 do (deleteItem Array_Minute 1)
maximus -=1
)
else if (arr[1] as float) > (arr[maximus] as float) then
(
if Array_Year.count > 1 do (deleteItem Array_Year maximus)
if Array_Month.count > 1 do (deleteItem Array_Month maximus)
if Array_Day.count > 1 do (deleteItem Array_Day maximus)
if Array_Hour.count > 1 do (deleteItem Array_Hour maximus)
if Array_Minute.count > 1 do (deleteItem Array_Minute maximus)
maximus -=1
)
else if (arr[1] as float) == (arr[maximus] as float) do
(
maximus-=1
)
)
)
-----------------------------------------------------------------------
--> delete lower "date items" from array one by one
DeleteLowerItemsIn Array_Year
DeleteLowerItemsIn Array_Month
DeleteLowerItemsIn Array_Day
DeleteLowerItemsIn Array_Hour
DeleteLowerItemsIn Array_Minute
--> load last autoback file
Final_Pos = findItem Final_Check (Array_Minute[1]) --find the number pos in array
try (loadMAXFile (BackupFiles[Final_Pos]) )
catch (MessageBox "Open Autoback File is Failed" title:"Micra")
)--if BackupFiles.count != 0 do
)--End: