Automate picture and video offloading!

When I would come home from hunting and it came time to offload all the video and from my cameras I’d have to sit there and manually copy the files over and wait, then swap cards, manually copy and wait, I generally have 4 cards to offload upto 100GB of data at a time. So I decided to look into how to automate it all, first thing that came to mind was autorun but apparently it has been removed from usb devices in newer versions of windows. After come googling I came across a software that brings autorun back to windows, called “APO USB Autorun” [link to download below].

I decided to play around with this new software a bit and though to myself if each device just had a script on it that moved all the files over with an autorun function boom I could just pop the cards in and let it do its thing automatically!

One downside with this method is you have to use a USB card reader, and you have to plug the card reader in, to the usb port, not just plug the sd card into the reader, so keep that in mind.

Below is the code in its entirety what you want to do is make both files in the base directory of your SD card one named “filecopy.bat” and “autorun.inf” an easy way to do this is to right click in the directory and go to New>Text Document and replace the NewTextDocument.txt with the required file names.

After you have the files created open autorun.inf with notepad or notepad++ and paste this into it.


[autorun]
open=filecopy.bat

Save that file, then do the same for filecopy.bat


@echo off
::>>time and date stamp YYYYMMDD, HHMMSS and YYYY-MM-DD_HH-MM-SS
for /f "delims=" %%a in ('wmic OS Get localdatetime  ^| find "."') do set dt=%%a
set datestamp=%dt:~0,8%
set timestamp=%dt:~8,6%
set YYYY=%dt:~0,4%
set MM=%dt:~4,2%
set DD=%dt:~6,2%
set HH=%dt:~8,2%
set HH=%dt:~8,2%
set Min=%dt:~10,2%
set Sec=%dt:~12,2%
set stamp=%MM%-%DD%-%YYYY%
::uncomment next 2 lines to preview the date stamp
::echo %stamp%
::pause
::>>creates subfolder under date for camera, leave blank if you want all pictures in one directory
set camname=nikon
::>>destination location of your video files \cameraname\ should be uniquie per camera name so files are organized by camera
set servpath=\\server\pictures\%stamp%\%camname%\
::>>source location of video files %cd% automatically uses your sd cards drive letter including first slash E.G. G:\
set vidpath="%cd%DCIM\100NIKON"
::>> creates new directory in the offload folder with the date and camera subfolder
if not exist "%servpath%" mkdir "%servpath%"
::>> copies files from %vidpath% to %servpath%
copy "%vidpath%" "%servpath%"
::>> creates temp directory for text comparison files if it doesnt exist
if not exist "%cd%temp" mkdir %cd%temp\
::>>writing a text file containing all the file contents from vidpath and servpath
dir "%vidpath%" /-p /a-d /o:gn | FIND "/" > %cd%temp\DirContents.txt
dir "%servpath%" /-p /a-d /o:gn | FIND "/" > %cd%temp\servercp.txt
::>> comparing file contents of both directories to make sure they mattch before wiping the card
::>> then if file lists and sizes dont match it goes down to :files_differ and deletes temp folder and files from %vidpath%
fc /b %cd%temp\servercp.txt %cd%temp\DirContents.txt > nul
if errorlevel 1 goto files_differ
::>> if all files and filesizes match in %vidpath% and %servpath% then it deletes the originals from %vidpath% then removes temp folder
del /q "%vidpath%\*"
rmdir /q /s "%cd%temp"
::>> uncomment next line to get verification message
::msg %username% copy success!
exit
:files_differ
::>> if copy failed this removes the temp directory and the new subfolder in
rmdir /q/s "%cd%temp"
rmdir /q /s "%servpath%"
::>> uncomment next line to get fail message
::msg %username% Copy failed please retry
exit

it’s pretty much self explanatory the only things you need to touch are below, and I think I commented everything well enough.

  • set camname=nikon
  • set servpath=\server\pictures\%stamp%\%camname%\
  • set vidpath=”%cd%DCIM\100NIKON\”

“camname=camnamehere” This setting will only add a folder for a certain camera in the dated folder where pictures/videos are dumped. EG C:/pix/01/14/2020/camnamehere/ so you want to be sure to use different names on each SD card if you want them organized.
“set servpath=\server\pictures\%stamp%\%camname%\” This setting represents the base folder where you would like to dump pictures/videos to EG mines in a windows share on my server called pictures.
“set vidpath=”%cd%DCIM\100NIKON\”” This setting tells the script where your pictures are on the SD card. LEAVE %CD% and do not add a backslash after it this is a variable that automatically puts your drive letter in, so if your card looks like this on your pc D:\DCIM\100NIKON and that’s the folder the pictures are in that is what you will type “%cd%DCIM\100NIKON\”

Upon completion of configuring the batch file and the autorun.info file, go ahead and install “APO USB Autorun” which can be found HERE, unplug your card reader and plug it back in, it should start copying!

Tip, to do multiple at once, get a usb hub and multiple readers then just plug the hub in it should run the script on all drives when they are all detected.