This is a simple this is a script for sorting images and camera files into folders per date. I used to use the software that came with my second digital camera, Canon ZoomBrowser, to do this, but as it was the only thing I used the software for, I though a wee Tcl script made a lot more sense.
It creates the folders it needs as it goes. For this is uses YYYY_MM_DD, as in 2011_06_22.
The whole code is just pasted in below, it's got a few comments in, but any bits that don't make sense, just add a question.
cd "C:/docs/My Pictures/"
puts "photo sorter"
# glob for searching
set file_list [glob \
"to_sort/*.jpg" \
"to_sort/*.avi" \
"to_sort/*.jpeg" \
"to_sort/*.3gp" \
"to_sort/*/*.jpg" \
"to_sort/*/*.avi" \
"to_sort/*/*.jpeg" \
"to_sort/*/*.3gp" \
"to_sort/*/*/*.jpg" \
"to_sort/*/*/*.avi" \
"to_sort/*/*/*.jpeg" \
"to_sort/*/*/*.3gp" \
"to_sort/*/*/*/*.jpg" \
"to_sort/*/*/*/*.avi" \
"to_sort/*/*/*/*.jpeg" \
"to_sort/*/*/*/*.3gp" \
"to_sort/*/*/*/*/*.jpg" \
"to_sort/*/*/*/*/*.avi" \
"to_sort/*/*/*/*/*.jpeg" \
"to_sort/*/*/*/*/*.3gp" \
]
# utility vars
set filecount 0
set newdircount 0
#loo
foreach myfile $file_list {
puts $myfile
puts [file stat $myfile ctime]
set file_time [file mtime $myfile]
puts [ clock format $file_time ]
set file_year [ clock format $file_time -format %Y ]
set file_month [ clock format $file_time -format %m ]
set file_day [ clock format $file_time -format %d ]
puts $file_year
puts $file_month
puts $file_day
set folder_name [ clock format $file_time -format %Y ]_[ clock format $file_time -format %m ]_[ clock format $file_time -format %d ]
puts $folder_name
puts "check it exists"
if { [file isdirectory $folder_name] == 0 } {
puts "no it doesn't, so we'll make it"
file mkdir $folder_name
incr newdircount
}
puts "move $myfile to $folder_name"
file rename $myfile $folder_name
incr filecount
}
puts "copied $filecount files"
puts "created $newdircount new directories"