Jay:
For your purposes, a stay-open application will probably be best. I really like using launchd, but when it launches AppleScripts, it does not allow user input, so it won’t work here.
The script below is functional in its current form, but only to download the card to the correct folder and eject the card. I don’t know how your machine reads your card names (see message #8, above) so I used “CF”. Open up the script in Script Editor after you know the name of your card, and replace the “CF” with the correct card name. Be sure you change both instances of “CF”. When that is done, you need to access Save As… and save the script as an application (in the File Format drop down menu) and be sure that the Stay Open box is checked. You can save it anywhere, but the Desktop is pretty convenient.
Before you double click the icon to run the application, be sure that NO CF cards are attached to the machine. Once it spools up, you will be prompted to enter the name of the game. As you can see by reading the script comments, you don’t need to worry about the date, just enter the game identification. The script will make the date and track the card count for you.
global folder_root_name --For you, this would be the name of the game you are shooting
global CF_count --This will count the cards as you go, so that you don't have to
global ej_Disks --list of disks for comparison
property Pict_path : (path to pictures folder as Unicode text) --Path to Pictures folder, where all the folders will be written
property CF_transfer : false --Will switch to true while disk is being copied
on run --This is what happens when you first start the application
set CF_count to 1 --Card counter set to 1
set folder_root_name to (text returned of (display dialog "Please enter root name of folder:" default answer "") & space & (my WriteDate(current date))) --You enter the name of the game, but DO NOT enter the date, the WriteDate handler will do it for you.
set ej_Disks to (list disks) --Get a list of current disks
end run
on idle --This loop fires every 3 seconds
if (list disks) ≠ej_Disks and CF_transfer = false then --If the list of disks is not the same as startup, and CF_transfer state is false, we get sent to the DownLoadImages handler
my DownLoadImages()
end if
return 3
end idle
on DownLoadImages()
set CF_transfer to true --Switch the state to true, so that nobody will bother us whil the download is happening
set CF_folder to folder_root_name & "-" & CF_count --Make the unique folder name
tell application "Finder"
make new folder at Pict_path with properties {name:CF_folder} --make the folder
duplicate entire contents of disk "CF" to folder (Pict_path & CF_folder) --Copy all the CF card contents to the new folder
eject disk "CF" --eject the CF card
end tell
set CF_count to CF_count + 1 --Set the counter up 1
set CF_transfer to false --reset the transfer state to false in preparation for the next CF card
end DownLoadImages
to WriteDate(dt)
return (dt's month as number) & "/" & dt's day & "/" & (characters 3 thru 4 of (dt's year as string))
end WriteDate
As long as all your CF cards have the same name, this baby should work to copy all the images to the new folder and eject the card so you can just pull it out of the reader when you are ready. I did not do an erase yet, because I am not sure that I know how to compare the folder to the card to do the verification thing before erasure. I will think about it, but in the meantime, please test this out with a couple of cards and see what happens.
Once the game is over, you just quit the application (like any other app) and it will be all fresh and new for the next game.